我试着编写一个程序来添加一个16位数的数字" broj"并将结果存储在名为" rez"。
的位置这是我的代码:
SECTION .data
broj DW 25326
SECTION .bss
rez RESW 1
SECTION .text
global _start
_start:
MOV CX, 10
MOV AX,[broj]
skok:
DIV CX --> result in AX, remainder in DX
ADD [rez],DX
MOV BX,AX -->move the result of the last division
JNZ skok
MOV EAX,1
MOV EBX,0
int 80h
这会产生"算术错误"但是,我的汇编调试技能不仅限于此。 我在Mint下使用了kdbg。
答案 0 :(得分:1)
DIV CX
会将DX:AX
中的32位值除以CX
。因此,您需要在DX
之前清除DIV
(例如XOR DX,DX
),以避免获得大于16位的商。