.model small
.data
nizA db 1,2,3,4,5,6,7,8
nizB db 8 dup(?)
len equ 8
.code
main proc
mov si,0
mov di,0
mov cx,len
program:
mov al,nizA[si] ;problem is here it always stores CDh in AL
cbw ;convert AL to AX so i can divide
mov bl,2 ;The number I want to divide so I test if its even or not
div bl ;Overflow message
cmp ah,0
je next:
input:
mov dl,nizA[si]
mov nizB[di],dl
inc di
next:
add si,2
loop program
endp
end
我这里有这段代码,用于我需要制作的决赛,非常简单。从给定数组的偶数索引中查找奇数。所以很自然,这意味着我增加SI
了 2 并将该数组元素放入AL
. 但是无论数组中的数字是什么,存储的AL
始终是十六进制数字 CD,然后,如果它按应有的方式存储,我想做CBW
转换为AX
并能够除以BL
我现在只是有错误来自 EMU 8086 的消息说
除法错误 - 溢出。要手动处理此错误,请更改中断向量表中 INT 0 的地址。
这肯定与CD编号有关,我这里只有两个问题
- 正在存储 CD 而不是 1
- 溢出(很可能是因为 CD 太高了,但我仍然将数字除以它们只会减少,所以它有点没有意义)