帮我看一个小程序。谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/16 08:21:52
问题:
将A段数据+B段数据,结果存在C段。
assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends

b segment
db 1,2,3,4,5,6,7,8
b ends

c segment
db 0,0,0,0,0,0,0,0
c ends
code segment
start:
mov ax,c
mov ss,ax
mov sp,16

mov ax,a
mov ds,ax

mov bx,b
mov es,bx

mov ax,0
mov bx,0

mov cx,8

s1: push[ax]
add ax,2
loop s1
s2: push[bx]
add ax,2
loop s2

mov ax,4c00h

int 21h
code ends

end start
检查有 1 SEVERE ERROR 请问哪错了。
是不是不可以用栈来加结果。需要用寄存器加?

我觉得这个程序有点问题:
需要进行相加的数据是字节数据,而用栈来实现不好,因为栈的操作是字操作.
还有,各个数据段的段地址在操作时,没有相应指明.

assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends

b segment
db 1,2,3,4,5,6,7,8
b ends

c segment
db 0,0,0,0,0,0,0,0
c ends
code segment
start:
mov ax,c
mov ss,ax
mov sp,16

mov ax,a
mov ds,ax

mov ax,b
mov es,ax

mov ax,0
mov bx,0

mov cx,8

s:mov al,[bx]
add al,es:[bx]
mov ss:[bx],al
inc bx
loop s

mov ax,4c00h

int 21h
code ends

end start