帮我看一个小程序。谢谢
来源:百度知道 编辑: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 请问哪错了。
是不是不可以用栈来加结果。需要用寄存器加?
将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