Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .MODEL SMALL
- .STACK
- .DATA
- .CODE
- .STARTUP
- MOV AX, 49 ; int a [nota 1]
- MOV BL, 28 ; int b
- MOV DX, 0 ; [nota 1]
- MCD: MOV DL, BL ; t = b
- DIV BL ; b = a / b (in particolare, il resto finisce in AH)
- MOV BL, AH ; b = a % b (effettiva valorizzazione)
- MOV AX, DX ; a = t [nota 1]
- CMP BL, 0
- JNZ MCD
- .EXIT
- END
- ; [nota 1]
- ; Siccome la DIV con un operando a 8 bit ha bisogno di un divisore a 16 bit, è opportuno
- ; che questi 16 bit non siano "sporchi". Per questo motivo:
- ; * AX in fase di definizione è espresso su 16 bit anche se ne bastano 8 (AH = 0)
- ; * la variabile temporanea DX viene azzerata su 16 bit (dovrò valorizzarci a)!
- ; * la MOV AX, DX non ha comportamenti inattesi in quanto DH = 0, motivo per cui il nuo=
- ; vo AX non genererà errori di overflow alla prossima divisione
Advertisement
Add Comment
Please, Sign In to add comment