我想让下面这个代码实现显示数组中的每个元素,但不知哪错了?

来源:百度知道 编辑:UC知道 时间:2024/07/01 08:00:14
data segment
addr db 1,2,5,6,4
data ends

program segment
main proc far
assume cs:program,ds:data
start:
push ds
sub ax,ax
push ax
mov cx,5
mov si,0
sub si,2
abc:
add si,2
mov dl,addr[si]
mov ah,2
int 21h
dec cx
cmp cx,0
jne abc
ret
main endp
program ends
end start

想让addr数组里的数字显示在屏幕上,但没得到想要的结果,哪错了?应该怎么改过来?

data segment
addr db 1,2,5,6,4
data ends

program segment
main proc far
assume cs:program,ds:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
mov cx,5
mov si,0
sub si,1
abc:
add si,1
mov dl,addr[si]
add dl,30h
mov ah,2
int 21h
dec cx
cmp cx,0
jne abc
ret
main endp
program ends
end start
1、首先缺少mov ax,data
mov ds,ax。。。。
2、输出的是ASCII值为1,2,5,6,4 的对应字符。所以要输出数字需要先加上30H
其实你的代码可以优化一下。。
data segment
addr db 1,2,5,6,4
data ends

program segment
main proc far
assume cs:program,ds:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
mov si,0
abc:
mov dl,addr[si]
add si,1
add dl,30h
mov ah,2
int 21h
dec cx
cmp si,5
jne abc
ret
main endp
progr