首页 汇编语言实验

汇编语言实验

举报
开通vip

汇编语言实验汇编语g实验汇编语言程序设计实验一DEBUG程序使用技巧学号:姓名:寄存器和内存开始Debug程序。输入“Q”退出程序。再次启动Debug。输入“r”来显示CPU的当前状态和寄存器中的当前内容。输入“rAX”和“1234';存器中的内容变为1234。输入“rDS”和“2000';存器中的内容变为2000。输入dDS:1000”来显示数据段中80H字节数据,把数据抄在这里:输入“fDS:1000110077”再显示一次这80H字节。判断这条指令的作用是什么?再输入“d2000:1000”来显示数据段中80H字节数据。...

汇编语言实验
汇编语g实验汇编语言程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 实验一DEBUG程序使用技巧学号:姓名:寄存器和内存开始Debug程序。输入“Q”退出程序。再次启动Debug。输入“r”来显示CPU的当前状态和寄存器中的当前内容。输入“rAX”和“1234';存器中的内容变为1234。输入“rDS”和“2000';存器中的内容变为2000。输入dDS:1000”来显示数据段中80H字节数据,把数据抄在这里:输入“fDS:1000110077”再显示一次这80H字节。判断这条指令的作用是什么?再输入“d2000:1000”来显示数据段中80H字节数据。观察与前面的数据有无不同。输入“d1900:0100'和“d1ff0:0100'来显示两个存储段中的内容。比较其中2000:0000段中的数据。相同段落中的数据相同么?根据你的观察,得出结论,是否程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。输入机器码,使用单步和断点退出Debug,再重新启动Debug。输入“r”观察CPU的状态,下一条指令是什么?使用两种方式输入一段程序,第一种方式:直接输入机器码。输入“u”来显示程序段中的指令序列。然后输入“dCS:100"来显示代码段中的数据。观察显示内容。"uCS:100106”做反汇编,就是显示出汇编语句。将这几句汇编语句记录下来:使用输入“r”观察CPU的状态,使用"'来跟踪程序,直至最后一条指令执行完毕。注意,跟踪程序前,要让IP寄存器中的值是100H。一直监视AX和IP寄存器的内容变化,尤其是标志位的变化。第二种方式,是输入汇编语句。重启Debug程序。先输入“aCS:100”,然后输入:MOVAX,FF00ADDAX,01F0MOVBX,AXNEGBXADDAX,BX输入“uCS:10010A”就可以得到这几条语句的机器码。把机器码记录下来:使用命令“rip”再输入“100”,可以将寄存器IP中的内容置为“100H,再输入“r”观察CPU的状态,然后反复输入“t”跟踪程序,直到程序结束。解释为什么标志位内容会有改变?另外,说明这段程序完成什么任务?重新把寄存器IP的内容变为100H,不使用跟踪命令“t;‘改用g10cC^完成程序。程序中还可以加断点,做法是在程序中加入“int3”这条指令。如果这条指令在程序的末尾,我们可以通过输入“g”来完成运行程序。这样就不需像上面需要告诉Debug程序最后机器码字节的地址偏移量了。"int3是Debug中很有效的返回控制指令。把这条指令放在程序中必要的位置上,在这条指令后面的代码在不允许时就不会运行ASCII字符码,从键盘输入,从显示器输出(i)标准ASCII(AmericanStandardCodeforInformationInterchange)码使用7-bit二进制数来代表字符。一般文本信息经常用ASCII编码。使用命令“aCS:100”,输入下面的代码:MOVBX,0MOV[BX],BLINCBXCMPBH,1JNE103INT3使用“dDS:0100”命令,显示程序运行前相应内存段中的数据。运行上面的程序来填充DS:0000-00FF这段内存中的内容。再次输入“dDS:0100”命令来显示填充的内容。在窗口的右边,可以看到相应的ASCII码字符。如果填充的内容不是字符,显示就用点表示。用类似方法,如何将字符串"Howareyou”写入计算机内存呢?(ii)计算机的BIOS(BasicInput/OutputSystem)程序有很多子程序,用来通过标准外设处理输入和输出,比如,键盘和显示器。BIOS的程序都可以通过称为系统中断的特殊指令被调用。例如:INT16H返回值是把下一个键盘输入值送入寄存器ALINT10H当BH=0时,将光标移到由寄存器DH和DL内容所指定的行和列的位置上INT21H当AH=2时,将DL中的内容作为ASCII码的字符显示出来INT21H当AH=9时,将位于DS:DX的内容显示为字符串(一个ASCII码序列由$符作结束符)。(ii)(a)将下列代码输入程序段CS:0100中:MOVAH,0INT16HINT3JMP100使用“uCS:100110”命令,将程序转换为机器码。其中“JMP100'的机器码是“EBF9。如果使用的是相对寻址方式,我们可以猜测出机器码中“F9'的含义么?相对寻址方式比绝对地址方便的地方是什么?重置IP的内容为100H,再输入“g”来执行程序。程序中断时,输入字母“B‘,检查寄存器AL中的内容为:重复上面的动作,但输入不同字母,记录下每次AL中的内容,能不能判断出来,这段程序的功能是什么?(ii)(b)将下面的代码输入CS:200中:MOVBH,0MOVDL,0MOVDH,0MOVAH,2INT10MOVDX,0MOVAH,9INT21INT3通过命令“eDS:068656C6C2124”在内存数据段中输入了一个字符串,将IP设为200,输入“g.”来运行程序,在屏幕左上角能找到输入的字符串是什么:这个程序是用来做什么的?4.内存寻址把下面程序输入到内存中以地址CS:0000为起始的代码段中。MOVAX,33MOVAX,[SI]MOVAX,[SI+2]MOVAX,[SI]2MOVAX,[25]MOVAX,[BX+SI]MOVAX,[BX+SI-3]MOVAX,20[BX+SI-10]INT3这些指令分别使用了哪些寻址方式?将上面的程序翻译为机器码时,可以发现有些指令的机器码是相同的。哪些代码的机器码相同?根据发现,得出的结论是什么?将数据段与代码段对齐,将数据段中前40H字节的数据显示出来,使用命令“dDS:040.”,把这些数据记录下来。假设BX和SI中的内容分别是12和17,判断一下程序运行后的结果是什么?跟踪程序,记录AX寄存器中的内容,与你预计的结果相符么?5.堆栈.⑴将程序输入内存中以地址CS:0000为起始的代码段中:MOVBX,22MOVAX,33PUSHAXPUSHBXMOVAX,0MOVBX,0POPAXPOPBXINT3跟踪程序,记录发现的变化。不要忘记运行前要把IP的内容变为0。步骤AXBXSP堆栈内容12增加什么语句,能够使AX和BX的内容在程序运行后被恢复。(ii)重启Debug将指令"INT3"在代码段地址CS:100中输入。输入“r.”记录堆栈段和代码段的参数:SS:SP:CS:IP:将堆栈段中SS:FFE0FFFF的内容显示出来,记录堆栈段中的有效数据。地址:内容:执行"INT3"指令,引起CPU的软件中断。相应的中断程序被调用。中断服务程序的最后一条指令是"IRET",它告诉CPU中断服务结束。一步步跟踪"INT3"直到"IRET"指令被执行。注意寄存器SP中内容的变化,记录被推入堆栈的内容,以及中断程序终止时,弹出命令将什么内容送到什么地方?根据观察,能找到INT3中断向量的内容么?中断服务程序的起始地址是什么?
本文档为【汇编语言实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
lizheng
暂无简介~
格式:doc
大小:14KB
软件:Word
页数:15
分类:建筑/施工
上传时间:2022-06-05
浏览量:0