Nasm 简单汇编程序算术错误
我试图编写一个程序,将16位数字“broj”的数字相加,并将结果存储在一个名为“rez”的位置 这是我的密码:Nasm 简单汇编程序算术错误,nasm,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 --
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。
DIV-CX
将DX:AX
中的32位值除以CX
。因此,您需要在DIV
之前清除DX
(例如XOR-DX,DX
),以避免得到大于16位的商。我应该更仔细地阅读指令集!:)非常感谢。