汇编语言顺序结构程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验3 顺序结构程序设计
一、实验目的
学习数据传送指令和算术运算指令的用法;掌握数据定义伪指令的格式,会用DEBUG 中的D命令观察DB、DW、DD存储数据的格式;熟悉汇编语言的基本框架,掌握编写汇编语言程序的基本方法。
二、示例
源程序如下:
data segment
a d
b 10
b db 20
d db 30,40,50
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov al,d+1
add al,d
mov a,al
mov al,d+1
add al,d+2
mov b,al
add d,10
add d+1,20
add d+2,30
exit: mov ah,4ch
int 21h
code ends
end start
阅读程序,试问程序执行到exit时,字节单元a、b、d、d+1、d+2中的内容各是什么?(结合程序分析和实验实际结果截图)
结果:a:46
b:5A
d:28
d+1:3C
d+2:50
验证:
分析出结果,并上机验证。
三、实验题
求表达式Y=A*X2+B*X+C的值,已知a、b、d分别存放在dataa、datab、datad字节单元,X存放在TABLE字节单元,结果Y放入RESULT字单元。
要求:①在DEBUG下多次修改X的值,观察执行结果Y
四、实验报告
写出程序清单,记录运行结果;总结DEBUG中U、E、D、T、G命令的功能。
程序代码:
data segment
dataa db 1
datab db 3
datad db 5
table db 2
result dw?
data ends
code segment
assume cs:code,ds:data start:
mov ax,data
mov ds,ax
mov al,table
mul al
mul dataa
cbw
mov bx,ax
mov al,table
mul datab
add bx,ax
mov al,datad
cbw
add bx,ax
mov result,bx
exit: mov ah,4ch
int 21h
code ends
end start
运行结果:
①在DEBUG下多次修改X的值,观察执行结果Y
更改X的值为3
验算正确
更改X值为5
更改X的值为0
总结DEBUG中U、E、D、T、G命令的功能。
1.U(反汇编命令) 将主存内容从指定内容或者范围内按照机器代码形成汇编指令显示
2.E(修改命令) 用于修改指定地址或者通过数据表修改指定地址的主存内容。
例如:-e ds:100 F3`XYZ`8D ;用F3/`X`/`Y`/`Z`/8D这5个数据替代DS:0100 ~ 0104的原来内容。
3.D(显示命令) 显示当前开始的地址的主存内容,或者显示指定范围的主存内容。
例如:-d 100 ;显示数据段100h开始的主存单元。
4.T(跟踪命令) 每执行一条指令就显示运行结果,使程序员可以细致地观察程序的执行情况。
从指定地址起执行一条或数值参数指定条数的指令后停下来,每条指令执行后都要显示所有寄存器和标志位的值以及下一条指令。如未指定地址则从当前的CS : IP开始执行。注意给出的执行地址前有一个等号,否则会被认为是被跟踪指令的条数(数值)。
5.G(运行命令) 从指定地址处开始运行程序,直到遇到断点或者程序正常结束。
程序遇到断点(实际上就是断点中断指令INT 3),停止执行,并显示当前所有寄存器和标志位的内容、以及下一条将要执行的指令(显示内容同R命令),以便观察程序运行到此的情况。程序正常结束,将显示“Program terminated normally”。