【发布时间】:2020-12-07 15:17:31
【问题描述】:
编写一个汇编语言程序来添加一个表格中所有在 50 到 100 之间的元素。将结果显示为十进制值。
我的解决方案:
.model small
.stack 64
.data
table db 0, 25, 50, 75, 100, 125, 150, 175, 200
ten db 10
.code
main proc
mov dx, @data
mov ds, ax
lea si, table
mov dx, 0
mov bx, 0
mov cx, 9
l2: mov ax, [si]
cmp ax, 50
jb l1
cmp ax, 150
ja l1
add ax, dx
mov dx, ax
l1: inc si
loop l2
l3: mov dx, 0
div ten
add dx, 30H
push dx
inc bx
cmp ax, 0
jne l3
mov ah, 02H
l4: pop dx
int 21h
dec bx
jnz l4
mov ax, 4c00H
int 21H
main endp
end main
显示错误-->> 除法错误-溢出。要手动处理此错误,请更改中断向量表中INT 0的地址。
对此有什么解决方案。 谢谢!
【问题讨论】:
-
您的表格是字节,但您加载的是单词。
-
@Jester 好的,我将两个数据的 db 更改为 dw。它显示 0 作为输出,为什么?