




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言程序设计实验报告课程名称汇编语言程序设计班级姓名学号指导教师汇编语言程序设计 实验一 DEBUG程序使用技巧寄存器和内存开始Debug程序。输入“Q”退出程序。再次启动Debug。输入“r”来显示CPU的当前状态和寄存器中的当前内容。输入“rAX”和“1234”,AX寄存器中的内容变为1234。输入“rDS”和“2000”,DS寄存器中的内容变为2000。输入“dDS:1000输入“fDS:1000110077答:从DS:1000地址七,将1100H字节的内容赋值为77H再输入“d2000:1000”输入“d1900:0100”和“d1ff0:0100答:相同段落中的数据相同,程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。
2.输入机器码,使用单步和断点退出Debug,再重新启动Debug。输入“r”观察CPU的状态,下一条指令是什么?答:下一条指令是ADD[BX+SI],AL使用两种方式输入一段程序,第一种方式:直接输入机器码。输入“u”来显示程序段中的指令序列。然后输入“dCS:100“uCS:100106使用输入“r”观察CPU的状态,使用“t”来跟踪程序,直至最后一条指令执行完毕。注意,跟踪程序前,要让IP寄存器中的值是100H。一直监视AX和IP寄存器的内容变化,尤其是标志位的变化。第二种方式,是输入汇编语句。重启Debug程序。先输入“aCS:100MOVAX,FF00ADDAX,01F0MOVBX,AXNEGBXADDAX,BX输入“uCS:10010A”就可以得到这几条语句的机器码。把机器码记录下来:使用命令“rip”再输入“100”,可以将寄存器IP中的内容置为“100H”。再输入“r”观察CPU的状态,然后反复输入“t”跟踪程序,直到程序结束。解释为什么标志位内容会有改变?另外,说明这段程序完成什么任务?答:(1)执行完指令:addax,01f0后结果为100f0H发生了进位,进位标志位发生改变,并且二进制的100f0H中1的个数为偶数,所以奇偶标志位发生了改变。(2)执行完指令:negbx即求补指令,bx由正数变为负数,符号标志位发生改变;二进制的1的数量有偶数变成奇数,奇偶标志位发生改变。(3)执行完指令:addax,bx,ax由00f0H变为10000H,符号标志位发生改变,零标志位发生改变,奇偶标志位发生改变。重新把寄存器IP的内容变为100H,不使用跟踪命令“t”,改用“g10c”来完成程序。程序中还可以加断点,做法是在程序中加入“int3”这条指令。如果这条指令在程序的末尾,我们可以通过输入“g”来完成运行程序。这样就不需像上面需要告诉Debug程序最后机器码字节的地址偏移量了。“int3”是Debug中很有效的返回控制指令。把这条指令放在程序中必要的位置上,在这条指令后面的代码在不允许时就不会运行。
3.ASCII字符码,从键盘输入,从显示器输出(i)标准ASCII(AmericanStandardCodeforInformationInterchange)码使用7-bit二进制数来代表字符。一般文本信息经常用ASCII编码。使用命令“aCS:100MOVBX,0MOV[BX],BLINCBXCMPBH,1JNE103INT3使用“dDS:0100”命令,显示程序运行前相应内存段中的数据。运行上面的程序来填充DS:0000-00FF这段内存中的内容。再次输入“dDS:0如果填充的内容不是字符,显示就用点表示。用类似方法,如何将字符串“Howareyou?”写入计算机内存呢答:使用如下汇编指令:movbx,0moval,48mov[bx],alincbxmoval,6fmov[bx],alincbxmoval,77mov[bx],alincbxmoval,61mov[bx],alincbxmoval,72mov[bx],alincbxmoval,65mov[bx],alincbxmoval,79mov[bx],alincbxmoval,6fmov[bx],alincbxmoval,75mov[bx],alincbxmoval,3fmov[bx],alincbxint3(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”-7的补码是F9H即向上跳转到前面7字节单元的位置。使用相对寻址可节省指令中的地址位数,也便于程序在内存中成块搬动重置IP的内容为100H,再输入“g”来执行程序。程序中断时,输入字母“B”,检查寄存器AL中的内容为:____62H_____重复上面的动作,但输入不同字母,记录下每次AL中的内容,能不能判断出来,这段程序的功能是什么?答:读入键盘键入的一个字母,送入寄存器AL。(ii)(b)将下面的代码输入CS:200中:MOVBH,0MOVDL,0MOVDH,0MOVAH,2INT10MOVDX,0MOVAH,9INT21INT3通过命令“eDS:068656C6C2124.”在内存数据段中输入了一个字符串,将IP设为200,输入“g.”来运行程序,在屏幕左上角能找到输入的字符串是什么:____hell!_________这个程序是用来做什么的?答:将光标移到由寄存器DH和DL内容所指定的行和列的位置即第0行第0列的位置,并将位于DS:0的内容显示为字符串,即显示’hell!’。
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这些指令分别使用了哪些寻址方式?答:MOVAX,33//立即数寻址MOVAX,[SI]//寄存器间接寻址MOVAX,[SI+2]//寄存器相对寻址MOVAX,[SI]2//寄存器相对寻址MOVAX,[25]//直接寻址MOVAX,[BX+SI]//基址加变址寻址MOVAX,[BX+SI-3]//相对基址加变址寻址MOVAX,20[BX+SI-10]//相对基址加变址寻址将上面的程序翻译为机器码时,可以发现有些指令的机器码是相同的。哪些代码的机器码相同?根据发现,得出的结论是什么?答:指令:MOVAX,[SI+2]和指令:MOVAX,[SI]2的机器码是相同的。两条指令的机器码相同(8B4402),二者表达方式不同,但是达到的寻址目标是一样的。将数据段与代码段对齐,将数据段中前40H字节的数据显示出来,使用命令“dDS:040.”,把这些数据记录下来。假设BX和SI中的内容分别是12和17,判断一下程序运行后的结果是什么?跟踪程序,记录AX寄存器中的内容,与你预计的结果相符么?答:预测最后AX的值变为相对DS中的基址偏移量为20+12+17-10=39的值运行结果:AX=FFFF与预测相同。
5.堆栈.(i)将程序输入内存中以地址CS:0000为起始的代码段中:MOVBX,22MOVAX,33PUSHAXPUSHBXMOVAX,0MOVBX,0POPAXPOPBXINT3跟踪程序,记录发现的变化。不要忘记运行前要把IP的内容变为0。步骤 AX BX SP 堆栈内容1 0H 22H 00FDH 空2 33H 22H00FDH空3 33H22H00FBH0033H4 33H22H00F9H0033H0022H5 022H00F9H0033H0022H6 0000F9H0033H0022H7 22H000FBH0033H8 22H33H00FDH空增加什么语句,能够使AX和BX的内容在程序运行后被恢复。pushaxpushbxpopaxpopbx(ii)重启Debug将指令"INT3"在代码段地址CS:100中输入。输入“r.”记录堆栈段和代码段的参数:SS:073FHSP:00FDHCS:073FHIP:0010H将堆栈段中SS:FFE0FFFF的内容显示出来,记录堆栈段中的有效数据。地址:内容:执行"INT3"指令,引起CPU的软件中断。相应的中断程序被调用。中断服务程序的最后一条指令是"IRET",它告诉CPU中断服务结束。一步步跟踪"INT3"直到"IRET"指令被执行。注意寄存器SP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 14《背影》教学设计2024-2025学年八年级语文上册同步课堂(统编版)
- 上海国内旅游合同范本
- 加油站供货合同范本
- 保安管理服务合同范例
- 健身房市场推广合同范本
- 第21课 活动课 从考古发现看中华文明的起源(教学设计-课堂使用)2024-2025学年七年级历史上册同步备课系列(统编版2024)
- 企业合同范本英文
- 2024年宣城郎溪县县直事业单位引进专业人才考试真题
- 第16课 明朝的科技、建筑与文学(教学设计)2023-2024学年七年级历史下册同步教学设计(统编版)
- 劳动合同范本 宿舍
- 三好学生竞选12
- 2024年河南郑州二七区侯寨中心卫生院招聘笔试真题
- 中国糖尿病防治指南+2024+解读
- 岗位职责心得体会(2篇)
- 2025年上海宝冶集团限公司招聘历年高频重点提升(共500题)附带答案详解
- 机械设计基础 课件 01机械设计概论
- GB/T 6822-2024船体防污防锈漆体系
- 全国第三届职业技能大赛(智能网联汽车装调运维)选拔赛理论考试题库(含答案)
- 电信网络诈骗犯罪的特征、治理困境及对策建议
- 救护车挂靠私立医院协议书(2篇)
- 《血透患教》课件
评论
0/150
提交评论