您的位置:首页 > 其它

汇编 编写、调试具有多个段的程序

2014-05-27 22:10 441 查看

程序如下,编写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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐