PDA

View Full Version : [Assembly] Stampare a video numeri interi


davser
04-10-2007, 18:46
Qualcuno sa spiegarmi come stampare a video un numero intero? Se fosse composto da una sola cifra, basta aggiungere il valore 30h (il codice ascii del numero 0), ma per numeri a pił cifre come posso fare?

Ho provato con questo codice ma non funziona:

.model small
.stack
.data

num1 dw 10
num2 dw 24
result dw ?

.code
.startup

mov ax, num1
add ax, num2
aaa
mov result, ax
add byte ptr result[0], 30h
add byte ptr result[1], 30h
mov al, '$'
mov byte ptr result[2], al
mov ah, 09h
mov dx, offset result
int 21h

.exit
end


Dovrebbe visualizzare il numero 34, invece viene fuori 81.

andbin
04-10-2007, 20:00
ma per numeri a pił cifre come posso fare?Fai delle divisioni per 10, tante quante bastano per ottenere le singole cifre decimali.

Esempio:
MOV AX,123 ; numero da convertire

MOV BL,10
DIV BL ; AL=12 AH=3

;... in AH ha la cifra meno significativa

;...

MOV AH,0
DIV BL ; AL=1 AH=2

;... in AL/AH hai le altre cifre

;...

E nota, se fare AX / 8 bit o se fare DX:AX / 16 bit dipende dal range del valore che vuoi convertire.
Se vuoi convertire un valore a 16 bit unsigned (AX per intero), non basta dividere per 8 bit.