9A文汇编语言试验_第1页
9A文汇编语言试验_第2页
9A文汇编语言试验_第3页
9A文汇编语言试验_第4页
9A文汇编语言试验_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MeiWei 81- 优质适用文档】汇编语言程序设计实验一 DEBUG 程序使用技巧学号:姓名:1. 寄存器和内存开始 Debug 程序。输入 “Q”退出程序。再次启动 Debug。 输入 “r”来显示 CPU 的当前状态和寄存器中的当前内容。 输入 “ArX ”和“1234”,寄存器中的内容变为 1234。输入“DrS ”和“20KK ”,寄存器中的内容变为 20KK 。输入“dDS:1000 ”来显示数据段中 80H 字节数据,把数据抄在这里:输入 “DfS:1000110077 ”再显示一次这 80H 字节。判断这条指令的作用是什么? 再输入 “d20KK:1000 ”来显示数据段中 8

2、0H 字节数据。观察与前面的数据有无不同。输入 “d1900:0100 ”和 “d1ff0:0100 ”来显示两个存储段中的内容。比较其中 20KK:0000 段中 的数据。 相同段落中的数据相同么?根据你的观察,得出结论, 是否程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。MeiWei_81- 优质适用文档】MeiWei 81- 优质适用文档】2输入机器码,使用单步和断点退出 Debug,再重新启动 Debug 。输入“r”观察 CPU 的状态,下一条指令是什么? 使用两种方式输入一段程序,第一种方式:直接输入机器码。输入 “u”来显示程序段中的指令序列。 然后输入

3、 “dCS:100 ”来显示代码段中的数据。 观察显 示内容。“CuS:100106 ”做反汇编,就是显示出汇编语句。将这几句汇编语句记录下来:t”来跟踪程序,直至最后一条指令执行完毕。注意,100H。一直监视 AX 和 IP 寄存器的内容变化,尤其使用输入 “r”观察 CPU 的状态,使用 跟踪程序前,要让 IP 寄存器中的值是 是标志位的变化。第二种方式,是输入汇编语句。重启 Debug 程序。先输入 “CaS:100 ”,然后输入:MOV AX,FF00ADDAX,01F0MOVBX,AXNEGBXADDAX,BX输入 “uCS:10010A ”就可以得到这几条语句的机器码。把机器码记录

4、下来:使用命令 “irp ”再输入 “100”,可以将寄存器 IP 中的内容置为 “100H”。再输入 “r”观察 CPU 的状态,然后反复输入 “t”跟踪程序,直到程序结束。解释为什么标志位内容会有改变?另 外,说明这段程序完成什么任务?重新把寄存器 IP 的内容变为 100H,不使用跟踪命令 “t,”改用 “g10c”来完成程序。 程序中还可以加断点,做法是在程序中加入“int3这”条指令。如果这条指令在程序的末尾,我们可以通过输入 “g”来完成运行程序。这样就不需像上面需要告诉 Debug 程序最后机器 码字节的地址偏移量了。 “int3是”Debug 中很有效的返回控制指令。把这条指令

5、放在程序中 必要的位置上,在这条指令后面的代码在不允许时就不会运行。MeiWei_81- 优质适用文档】MeiWei 81- 优质适用文档】3 ASCII 字符码,从键盘输入,从显示器输出(i) 标准 ASCII(AmericanStandardCodeforInformationInterchange) 码使用 7-bit二进制数来代表字 符。一般文本信息经常用 ASCII 编码。使用命令 “CaS:100 ”输,入下面的代码:MOVBX,0MOVBX,BLINCBXCMPBH,1JNE103INT3使用 “dDS:0100 ”命令,显示程序运行前相应内存段中的数据。运行上面的程序来填充 D

6、S:0000-00FF 这段内存中的内容。再次输入 “dDS:0100 ”命令来显示填充的内容。在窗口的 右边,可以看到相应的 ASCII 码字符。如果填充的内容不是字符,显示就用点表示。用类似方法,如何将字符串“Howareyou? ”写入计算机内存呢?(ii) 计算机的 BIOS(BasicInput/OutputSystem) 程序有很多子程序,用来通过标准外设处理输入 和输出,比如,键盘和显示器。BIOS 的程序都可以通过称为系统中断的特殊指令被调用。例如:INT16H 返回值是把下一个键盘输入值送入寄存器 ALINT10H 当BH=0 时,将光标移到由寄存器 DH和DL内容所指定的行

7、和列的位置上 INT21H当AH=2时,将 DL中的内容作为 ASCII码的字符显示出来INT21H 当AH=9时,将位于 DS:DX的内容显示为字符串 (一个ASCII 码序列由 $符作结束符 )。 (ii)(a) 将下列代码输入程序段 CS:0100中:MOV AH,0INT16HINT3JMP100使用 “uCS:100110 ”命令,将程序转换为机器码。其中 “JMP100”的机器码是 “EBF9”。如果使 用的是相对寻址方式, 我们可以猜测出机器码中 “F9”的含义么?相对寻址方式比绝对地址方 便的地方是什么?重置IP的内容为100H,再输入“g”来执行程序。程序中断时,输入字母 “

8、B”,检查寄存器 AL 中的内容为: 重复上面的动作,但输入不同字母,记录下每次 AL 中的内容,能不能判断出来,这段程序 的功能是什么?(ii)(b) 将下面的代码输入 CS:200 中:MOVBH,0MOVDL,0MOVDH,0MOV AH,2INT10MOVDX,0MOV AH,9INT21INT3通过命令 “DeS:068656C6C2124 . ”在内存数据段中输入了一个字符串,将IP设为 200,输入“g. ”来运行程序,在屏幕左上角能找到输入的字符串是什么: 这个程序是用来做什么的? MeiWei_81- 优质适用文档】MeiWei 81- 优质适用文档】4.内存寻址 把下面程序

9、输入到内存中以地址 CS:0000为起始的代码段中。MOV AX,33MOV AX,SIMOV AX,SI+2MOV AX,SI2MOV AX,25MOV AX,BX+SIMOV AX,BX+SI-3MOV AX,20BX+SI-10INT3哪些代码的机器码相这些指令分别使用了哪些寻址方式?将上面的程序翻译为机器码时, 可以发现有些指令的机器码是相同的。 同?根据发现,得出的结论是什么?将数据段与代码段对齐, 将数据段中前 40H字节的数据显示出来, 使用命令 “DdS:040 . ”,把 这些数据记录下来。假设 BX和SI中的内容分别是 12和17,判断一下程序运行后的结果是什么?跟踪程序,

10、记录AX 寄存器中的内容,与你预计的结果相符么?MeiWei_81- 优质适用文档】MeiWei 81- 优质适用文档】5.堆栈 .(i) 将程序输入内存中以地址 CS:0000为起始的代码段中: MOVBX,22MOV AX,33PUSHAXPUSHBXMOV AX,0MOVBX,0POPAXPOPBXINT3跟踪程序,记录发现的变化。不要忘记运行前要把IP的内容变为 0。BX SP 堆栈内容AX 和 BX 的内容在程序运行后被恢复。步骤 AX1 2 3 4 5 6 7 8 增加什么语句,能够使(ii) 重启 Debug将指令 INT3 在代码段地址 CS:100 中输入。输入 “r. ”记录堆栈段和代码段的参数:SS:SP:CS:IP:将堆栈段中 SS:FFE0FFFF 的内容显示出来,记录堆栈段中的有效数据。地址 :内容 :执行INT3 指令,引起 CPU的软件中断。 相应的中断程序被调用。 中断服务程序的最后

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论