程序如下,编写code段中代码,将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,a
mov ds,ax
mov ax,b
mov es,ax
mov bx,0
mov cx,8
s: mov al,[bx]
add es:[bx],al
inc bx
loop s
mov ax,c
mov ds,ax
mov bx,0
mov cx,8
s0: mov al,es:[bx]
mov [bx],al
inc bx
loop s0
mov ax,4c00h
int 21h
code ends
end start
=======================华丽的分割线===============================
程序二:一次循环
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,a
mov ds,ax ;ds指向a段地址
mov ax,b
mov es,ax ;es指向b段地址
mov bx,0
mov cx,8
s: mov al,[bx]
add al,es:[bx]
mov dx,c
mov ds,dx ;ds指向c段地址
mov [bx],al
mov ax,a
mov ds,ax ;重新将ds指向a段(好像此处还能改进)
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
=======================华丽的分割线===============================
程序三:程序二的改进版
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,a
mov ds,ax
mov ax,b
mov es,ax
mov ax,c
mov ss,ax
mov bx,0
mov cx,8
s: mov ax,[bx]
mov ss:[bx],ax
mov ax,es:[bx]
add ss:[bx],ax
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start