简单的汇编程序算术错误

时间:2014-11-12 12:55:13

标签: nasm

我试着编写一个程序来添加一个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。

1 个答案:

答案 0 :(得分:1)

DIV CX会将DX:AX中的32位值除以CX。因此,您需要在DX之前清除DIV(例如XOR DX,DX),以避免获得大于16位的商。