汇编程序函数溢出

时间:2016-12-18 12:54:14

标签: assembly x86-16

这里有任何汇编专业人士吗?经历了几个小时..无法弄清楚为什么我会溢出和东西。任何想法为什么会崩溃?

我的变数:

a DB 2
b DB 1
c DW 4
x DB -1, 2, 3
y DW kiek dup(0AAh)

我的功能

f3:
MOV bx, c
MOV ax, 2   ; ax = 2
IMUL bx      ; ax = 2c
JO kl1      ; mul too big to store 
MOV dx,ax   ; dx = 2c  
MOV al, a   ; al = a
CBW
SUB dx, ax  ; dx = 2c - a
MOV bx,dx   ; bx = 2c - a
MOV cl, x[si]
CBW
MOV al,a    ; al = a
IMUL cx  ; al = a*x
CBW
JO kl1      ; mul too big to store
MOV dx, c   ; dx = c  
ADD ax,dx   ; ax = a*x+c
MOV cx,ax   ; cx = a*x+c
MOV dx,bx   ; ax = 2c-a
MOV bx, cx
CMP bx, 0
JE kl2  ; divided by 0
MOV ax, dx     
IDIV bx
JMP re

对不起,如果这是一个愚蠢的错误,就再也无法处理了,谢谢!

一切顺利,我在寄存器A中得到6,在寄存器B得到2,当它尝试IDIV时,它说:  划分错误 - 溢出。  手动处理此错误,  在中断向量表中更改INT 0的地址。

它显示了这一行(我甚至没有在我的代码上):

 BIOS DI
 INT 00h
 IRET ; this is where i get the error 

0 个答案:

没有答案