汇编语言(第三版)王爽著(实验六)实践课程中的程序
一、实验目的
掌握在Debug中使用命令进行汇编指令编程及执行
二、实验设备与环境
计算机
DOS操作系统或 Windows 操作系统
MASM.EXE, LINK.EXE, DEBUG.COM 或宏汇编集成环境
三、实验内容、程序清单及运行结果
1.用标号完成问题7.2.
assume ds:data,cs:code
data segment
s db 'welcome to masm!'
d db 16 dup (0)
data ends
code segment
start:
mov ax,data
mov ds,ax
sub bx,bx
mov cx,16
l:mov al,s[bx]
mov d[bx],al
inc bx
loop l
mov ax,4c00h
int 21h
code ends
end start
使用标号,不仅确定了数据的地址还确定了数据的长度。s是源数据,d是目的地,
采用循环实现
2.编程,完成问题7.9中的程序。
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
sub bx,bx
mov ax,stacksg
mov ss,ax
mov sp,16
mov cx,4
s0:push cx
sub si,si
mov cx,4
s:mov al,ds:[bx+3+si]
and al,11011111b
mov ds:[bx+3+si],al
inc si
loop s
add bx,16
pop cx
loop s0
mov ax,4c00h
int 21h
codesg ends
end start
使用嵌套循环,需要注意cx的保护,这里用到了栈的功能:暂存。用and指令实现第五位变为0的运算。si实现列偏移,dx实现行偏移
3.定义下面的字节数组,数组长度为10,X1和X2的数据值自行定义,要求将X1和X2相同位置的数相加,结果存入X3:
X1 db ?
X2 db ?
X3 db ?
assume cs:code,ds:data
data segment
x1 db 1,2,3,4,6,5,7,8,9,5
x2 db 0,9,8,7,5,4,2,3,5,6
x3 db 10 dup (0)
data ends
code segment
start:
mov ax,data
mov ds,ax
sub bx,bx
mov cx,10
s:mov al,x1[bx]
add al,x2[bx]
mov x3[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
使用标号,不仅确定了数据的地址还确定了数据的长度,可以进行快速的定位。
使用循环实现相加和数据交换
- 实验结论、实验体会
第一题:
使用标号,不仅确定了数据的地址还确定了数据的长度
第二题:
使用嵌套循环,需要注意用栈进行cx的保护。And:实现逻辑与的功能
第三题:
使用标号,可以进行快速的定位,不仅确定了数据的地址还确定了数据的长度。增强了代码的可读性,为以后团队协作打下了基础
其它实验:
汇编语言(第三版)王爽著(实验五)编写、调试具有多个段的程序