汇编语言顺序结构程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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”。

相关文档
最新文档