汇编语言实验指导书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
格式:E地址表用表中内容替代指定地址开始的内存块内容。
E地址显示指定地址的1个字节的内容,输入新值按空格键进
入到下一字节位置;按“—”键返回到上一字节;按回车键则结束E命令。
(3)填充命令—F
格式:F范围表用表中内容反复赋值以填充指定范围的内存块。
(4)显示修改寄存器—R
格式:R显示并可修改指定寄存器的内容。
(5)命令中的地址参数以段:偏移量给出,若只给出偏移量,则使用的缺省段A,U,G,T,L,W诸命令的缺省段是CS,C,D,E,F,M,S诸命令的缺省段是DS。
(6)使用W写命令之前要记住检查或修改BX,CX积存器的值使其等于或大于欲写入文件的字节长度值。
(7)DEBUG承认Ctrl+Break(中止)、Ctrl+Nomlock(暂停显示)等DOS控制键功能。
00128D3EOO00LEADI[0000]
0016FCCLD
00l7F92800MOVCX,0028
代码段段地址偏移地址机器代码汇编
18F400lAF3REPZ
00lBA4MOVSB
00lCCBPETF

断点,程序执行到此就结束
根据反汇编清单中,得到CS:18F4
DS:18F6
ES:18F9
断点:00le
《汇编语言》
实验指导书/实验报告
2011年4月编制
专业:
班号:
学号:
姓名:
哈尔滨华德学院
计算机应用技术系
实验一DEBUG调试程序和汇编程序的上机操作
ADEBUG调试程序的使用
一、实验目的
学会在DOS环境下使用DEBUG调试程序
二、DEBUG调试程序
1.DEBUG调试程序的启动
在运行菜单下单击DEBUG选项。
使用D命令观察数据段内容有40个‘a’,观察附加段内容无40个‘a’
3.使用G命令
—G1C↙
因为IC偏移量是程序搬运结果的位置,所以运行程序完成40个‘a’搬运到附加段中,此时附加段有40个‘a’,同时数据段40个‘a’也存在。
4.程序运行之后再看内存变化
—D18F6:0↙61...... 61......61, 61......61
4)根据输入值(0-4)的不同,执行不同的操作,用转移标法编写程序。
实验三循环程序设计和DOS调用
一实验目的
熟悉循环程序的设计方法
二实验内容
在以BUF为首地址的字节单元中存放CNT个无符号数,找出其中最大数,送入MAX字节单元中:
1)特以BUF为首地址的数据区中存有八个无符号数,分别为l、2、3、100、23、78、90、134。
把指定地址开始的内存块写入指定磁盘的几个逻辑扇区中,长度由扇区容量,扇数确定。
W地址
把指定地址(缺省为CS:100H)开始内存快(块字节长度由BX:CX寄存器给出)写入磁盘。
注:W命令不允许写具有EXE和HEX展名文件。
例3:把从CS:100开始的连续3040H个字节的内存块写入到文件MYFILE中,在DEBUG启动后,连续进行如下操作:
(8)执行命令—G
格式:G=地址从指定地址开始执行直至程序结束。
G从当前CS:IP位置开始执行,直至程序结束。
G地址断点地址从指定或当前地址开始执行,遇到断点则停止,
并显示寄存器和标志的值以及断点处指令。
(9)命名命令—N
格式:N文件名为L命令和w命令指定要操作和文件。
N文件参数为要执行的文件指定参数。
2.使用D命令
—D18F6:0↙
61...... 61...... 61......61
61...... 61...... 61......61
61...... 61——共有40个‘a’
注:因为(DS)=18F6,所以上条指令是查看DS段的内容。
一D 18F9:0↙无40个‘a’
注:因为(ES)=18F9,所以上条指令是查看ES段的内容。
实验二分支程序设计和DOS调用
一、实验目的
掌握汇编语言中分支程序的设计方法和DOS调用
二、实验内容
1、设变量X为带符号整数,要求:
1)如果X的值大于零,变量Y赋值为l。
2)如果X的值等于零,变量Y赋值为0。
3)如果X的值小于零,变量Y赋值为-1。
2、完成下述工作
注:完成下面的工作需要手动修改源文件中X的初始值,以满足不同条件
3.在字符串中查找空格字符(ASCII码位20H),找到显示Y,否则显示N。
4.根据键盘输入值N,计算前N项和(N<=10)
分析:这是循环程序,键盘输入值位循环次数,如果输入值是0,则不循环;否则如果输入的是5,则AL=1+2+3+4+5=15,执行5次循环。
三、程序清单
(自己编写)
四、程序设计(画出流程图、写出程序清单及调试步骤和结果)
1.统计数据块中正数和负数个数(设有7个数,分别为-32,25,36,-18,-64,0,-3)
2.统计学生成绩,设有10个学生的成绩分别为56,69,84,82,73,88,89,63,100和80分,试编写程序分别统计低于60分,60-69分,70-79分,80-89分,90-99分以及100分的人数,并存放到S5,S6,S7,S8,S9以及S10单元中。
1)比较两个无符号数的大小(量个数放在内存S3的连续两个单元中),将大数存入MAX单元中。
2)试编一程序,求三个带符号数据中的最大值,并将最大值存入MAX单元中,设三个带符号数分别在三个变量X,Y,Z中存储。
3)根据MODE单元中编号0-7分别转向L0-L7标号处,执行L0-L7处分别完成显示‘0-7’字符,即当MODE=0时,转向L0标号,完成显示‘0’,当MODE=7时,转向L7标号,完成显示‘7’。
2)数据个数求法:数据末地址减去首地址,用符号CNT表示,即CNT=末地址-首地址。
3)放最大数单元用MAX符号地址表示。
4)使用U命令,得到反汇编清单,找到DS段地址。
5)使用D命令,观察数据内容。
6)使用G命令,运行程序。
7)使用D命令,看数据段数据变化。
8)程序运行结果把最大数送入MAX单元。
2.退出DEBUG
—Q↙(回车)
3.DEBUG的命令Βιβλιοθήκη Baidu单
(1)显示内存单元内容的命令—D
格式:D地址显示从指定地址开始的128个字节的内容。
D范围显示指定范围的内存内容。
D从上次D命令结束位置接着显示。
例1:从数据段偏移地址FF40H单元开始,显示40H个字节的内容。
DFF40L40↙(回车)
(2)修改内存单元内容的命令—E
格式:U[地址]从指定地址或上次U命令结束位置开始把内存16字节
(40列显示格式)或32字节(80列显示格式)内容反汇编。
U范围把指定地址范围的内存块全部进行反汇编。
(7)跟踪命令—T
格式:T[=地址]从指定地址(缺省为当前CS:IP地址)执行一条指令,
并显示寄存器内容,标志位的状态和下一条指令。
T[=地址]条数单步方式指定行指定条数的各条指令。
L地址盘号起始扇区扇数
把指定磁盘(盘号0—A驱,盘号1—B驱)的指定数目的逻辑扇区装入到指定地区开始的内存区。
例2:L04BA:010020F6D
该L命令是把C盘(盘号2)从第15(即0F)逻辑扇区开始的,6DH个逻辑扇区内容,装入到内存中以04BA:0100H开始区域。
(11)写命令—W
格式:W地址盘号其始扇区扇数
1)使用U命令,根据反汇编的程序清单找到DS的段地址
2)使用D命令,观察到数据段中X单元和Y单元的值
3)使用G命令运行程序
4)使用D命令,观察到数据段中X单元和Y单元的值;反复使用2),3),4)步进行观察。
3、修改程序,显示变量Y的值。
三、 程序清单
按照上述实验过程同学自己设计程序。要求画出流程图,写出程序清单,调试步骤及结果。
二.汇编语言程序的上机过程。
1.使用HJASM编辑软件编辑汇编语言文本,得到扩展名为ASM的汇编语言程序的源文件
2.对汇编语言源程序进行汇编,得到扩展名为.OBJ的目标码文件
3.对目标码文件进行链接,得到扩展名为EXE的地址浮动的可执行文件
4.使用DEBUG命令加载汇编语言程序(EXE)到内存,然后在DEBUG环境下调试汇编语言程序
三、实验内容
思考:如AX=0012H,BX=0034H,要求把它们装配在一起形成AX=1234H。
利用课堂上讲过的算术逻辑指令自己编程序
B.汇编语言程序上机操作
一.实验目的
1.学会汇编语言程序上机操作,包括汇编语言程序的编辑、汇编、链接、调试和运行;
2.学会常用的伪指令使用,掌握汇编语言的分段结构。
例:
N file1.exe
L
N file2.dat file3.dat
G
上述第一个N命令为随后的L命令指定文件名,L命令将文件file1.exe装入内存,第二个命令为执行file.exe文件指定参数,最后G命令运行file1.exe文件。
(10)装入命令—L
格式:L[地址]
把N命令给出的盘文件装入到以指定地址或CS:100H开始的内存区中。
(3)在“—”提示符下键入命令关键字符,若命令带有参数则应在关键字符后紧跟着输入第一个参数,不要随意加空格符,因为空格符是参数之间的间隔符。
(4)命令结尾应按回车键,此命令才生效,除e命令外,一个命令执行完重新给出“—”DEBUG提示符。使用A命令时,每输入一条指令就按一次回车键,屏幕立即显示下一个地址,若要结束A命令,则不要输入指令只按回车键。
(17)检索命令—S
格式:S范围字符串在指定范围内检索某个字符串。
(18)退出命令一Q
格式:Q结束DEBUG的运行,不保存内存中的被调试文件(若要保存,先用W
指令),返回DOS。
4.使用DEBUG命令的注意事项
(1)DEBUG命令只采用16进制数;故不要加“H”后缀。
(2)标志寄存器的8个标志位的值采用符号标志;分别表示标志的值1和0。
①—RCX(回车)
显示CX当前值
键入:3040 (回车)(将3040送入CX)
②—RBX (回车)
显示BX当前值
键入: :0000(回车)(将0000H送入BX)
③—NMYFILE(回车)(给待写文件命令)
④—W (回车)
(12)比较指令—C
格式:C范围地址
比较两个内存块的内容,范围用第一个起始地址和块长或起始地址、结束地址说明,地址是第二块的起始地址。
R寄存器名显示并可修改标志寄存器的内容。
RF显示并可修改标志寄存器的内容。
(5)汇编命令—A
格式:A地址从指定地址开始汇编,结果写入内存。
A若不指定地址则从上次A命令结束位置开始汇编。首次
则从CS:100H开始汇编。
注:汇编语句中不能使用名字。A命令只识别指令和DB,DW伪指令。
(6)反汇编命令—U
61...... 61......61,61......61
61......61
—D18F9:0↙61...... 61......61, 61......61
61...... 61......61,61......61
61......61
5.退出Q命令
—Q退出DEBUG
四、自己设计一个简单程序,上机调试。
1.使用U命令
—U
18F4:
0000lEPUSHDS
000l2BC0SUBAX,AX
000350PUSHAX
0004B8F618MOVAX,18F6
00078ED8 MOVDS,AX
0009B8F918MOVAX,18F9
000C8EC0MOVES,AX
000E8D360000LEASI[0000]
(13)16进制运算指令—H
格式:H值1值2求值l,值2的和与差(全为16进制数)。
(14)写端口命—O
格式:O端口地址字节把一个字节数据由指定的端口输出。
(15)读端口命令—I
格式:I端口地址从指定端口输入一个字节并显示。
(16)传送命令—M
格式:M范围地址把指定范围的内容传送到指定的地址开始的内存块中。
三.实验内容
1.建立汇编语言源程序文件(ASM)
例:把40个字母a的字符串从源缓冲区传送到目的缓冲区
2.在DEBUG环境下运行程序
一般来说,对于我们自己设计的程序,在DEBUG下加载,然后用DEBUG命令控制程序的运行。便于发现程序的错误,加以修改源程序,重新汇编,链接,然后再运行。如此反复多次,最终就可完成程序的调试。
溢出标志OF:OV(溢出),NV(不溢出)
方向标志DF:DN(减量),UP(增量)
中断允许标志IF:EI(允许),DI(禁止)
符号标志SF:NG(负),PL(正)
零标志ZF:ZR(零),NZ(非零)
进位标志CF:CY(有),NC(无)
奇偶标志PF:PE(偶),PO(奇)
辅助进位标志AF:AC(有),NA(无)
相关文档
最新文档