代码语言:javascript复制
;编写程序将data1段和data2段中的字节型数据依次相加,将结果存在data3段中。
;ds保存data1的段地址,es保存data2的段地址,ss保存data3的段地址。
;db用来定义字节型数据,这里定义了5个连续的字节型数据。
assume cs:code
data1 segment
db 1,2,3,4,5
data1 ends
data2 segment
db 6,7,8,9,10
data2 ends
data3 segment
db 0,0,0,0,0
data3 ends
code segment
start: mov ax,data1
mov ds,ax
mov ax,data2
mov es,ax ;设置段寄存器
mov ax,data3
mov ss,ax
mov bx,0 ;设置偏移地址
mov cx,5 ;循环次数
s: mov al,[bx]
add al,es:[bx] ;完成相加
mov ss:[bx],al ;保存结果到data3中
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
结果如下所示:
代码语言:javascript复制;编程实现将数据段的内容逆序,我们将借助栈的特性来实现这个操作。
;dw用来定义字类型数据
assume cs:code
data segment ;数据段
dw 1,2,3,4,5,6,7,8,9
data ends
stack segment ;栈段
dw 0,0,0,0,0,0,0,0,0
stack ends
code segment ;代码段
start: mov ax,data
mov ds,ax ;初始化数据段段寄存器
mov bx,0 ;数据段偏移地址
mov ax,stack
mov ss,ax ;设置栈顶段地址
mov sp,18 ;设置栈顶偏移地址
mov cx,9
s1: push [bx] ;将数据入栈
add bx,2 ;dw定义的占两个字节
loop s1
mov cx,9
mov bx,0
s2: pop [bx] ;从栈中将数据弹出
add bx,2
loop s2
mov ax,4c00h
int 21h
code ends
end start
结果如下所示: