汇编实验一实验报告.docx
《汇编实验一实验报告.docx》由会员分享,可在线阅读,更多相关《汇编实验一实验报告.docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、汇编语言程序设计实验报告课程名称汇编语言程序设计班 级学 号指导教师把这些数据记录下来。-d F F F F F一 3 3 3 3 3- d 7 7 7 7 7二 0 0 0 0 0B88BFF000533 00 8B 0440 FD 8B 40 FF FF FF FF 00 14 00 188B 44 0Z-8B 44 10 92 O1-01 01 FF FF FF-FF FF 00 3F 07-FF FF02Al 25 GO 8B 01 00 OZ FF FF FF FF 00 GO 00 FF FF 0O 00 0O假设BX和SI中的内容分别是12和17,判断一下程序运行后的结果是什么?
2、跟踪程 序,记录AX寄存器中的内容,与你预计的结果相符么?答:预测最后AX的值变为相对DS中的基址偏移量为20+12+17/0=39的值运行结果:AX=FFFF与预测相同。AX=O1O1 BX=OO1ZDS=O?3F ES=0?3F O73F:O006 8B440Z-tCX=000O DX=O0OO SP=0OFDSS=073F CS=073F IP=OOG8MOUAX, CSI*OZBP=0QOO SI=001? DI=0000 NU UP EI NG MZ NA PE NC DS:0019=0101AX=O101 BX=0O1ZDS=O?3F ES=0?3F O?3F:O0OB A1Z5O
3、O-tCX=O0OO DX=OOOO SP=OOFDSS=0?3F CS=073F IP=GOOBMOUAX,0025BP=O0OO S1=001? D1=0000MU UP EI NG NZ NA PE NCDS:0025=FFFFAX=FFFF BX=0O1ZDS=O?3F ES=073F O73F:O0OE 8B00 -tCX=0O0O DX=0OOO SP=0OFDSS=073F CS=073F IP=OOGEMOUAX, BX*SUBP=OO00 SI=001? DI=0OGO NU UP EI NG MZ NA PE NC DS:OOZ9=FFFFX=FFFFPS=073FBX=0
4、O1ZES=073FCX=000O DX=OOOO SP=OOFDSS=0?3F CS=073F IP=OO1OO73F:OO10 8B40FD -tMOUAX, BX*SI-03BP=O0OO SI=0017 DI=0O0O NU UP EI NG NZ MA PE NC DS:00Z6=FFFFX=FFFFPS=O?3FBX=O01ZES=0?3FCX=G0OO DX=O000 SP=O0FD BP=OOOO SI=G017 DI=0OOOSS=0?3F CS=073F IP=OO13O73F:0013 8B401OMOUNU UP EI MG MZ NA PE NCDS:O039=FFF
5、F5 .堆栈.将程序输入内存中以地址CS:OOOO为起始的代码段中:MOV BX,22MOV AX,33PUSH AXPUSH BXMOV AX,0MOV BX,0POP AXPOPBXINT3跟踪程序,记录发现的变化。不要忘记运行前要把IP的内容变为Oo步骤AXBXSP堆栈内容1OH22HOOFDH空233H22HOOFDH空333H22HOOFBH0033H433H22H00F9H0033H 0022H5022H00F9H0033H 0022H60000F9H0033H 0022H722H0OOFBH0033H822H33HOOFDH空增加什么语句,能够使AX和BX的内容在程序运行后被恢复
6、。push axpush bx pop ax pop bx(ii)重启 Debug将指令“INT3”在代码段地址CS:100中输入。输入记录堆栈段和代码段的参数:SS:073FH SP:00FD H CS:073FH IP:0010H将堆栈段中SS:FFE0 FFFF的内容显示出来,记录堆栈段中的有效数据。 地址:-d ss:ffe0 ffff973F : FFE0 00 GO 00 OO OQ OO 00 00-00 OO OO 00 GO 0Q 00 OO 973F: FFF0 OG 00 00 OO OO OO 00 00-00 OO OO OG 00 0Q 00 OO 内容:-d ss
7、:00f0 0110373F:00F0 00 00 GO 00 00 00 00 00-00 00 00 00 00 00 00 009?3F:010G CC 00 00 00 00 00 00 00-00 00 GO 00 00 00 AE FE 373F:O110 00.执行,INT3”指令,引起CPU的软件中断。相应的中断程序被调用。中断服务程序的最 后一条指令是“RET”,它告诉CPU中断服务结束。一步步跟踪“NT 3直到“RET”指令被执行。注意寄存器SP中内容的变化,记录被推 入堆栈的内容,以及中断程序终止时,弹出命令将什么内容送到什么地方?根据观察,能找 到INT3中断向量的内容
8、么?中断服务程序的起始地址是什么?答: 推入堆栈的内容:073F F202INT 3指令执行后CS变为0070X=0000 BX=0000S=073F ES=073FCX=0000 DX=0000 SP=00F7SS=073F CS=O070 IP=0008170:0008 FE38BX+SUBP=0000 SI=0000 DI=000ONU UP DI PL NZ NA P0 NCDS:0000二CDY 0Oe0 0100i?3F:OOE0 0O GOi?3F:O0F0 00 0073F:010O CCi?3F:OOE0 0O GOi?3F:O0F0 00 0073F:010O CC00 0
9、0 00 00 00 00-00 00 0000 00 00 00 00 01-01 3F 072.IRET指令执行,即中断服务结束后弹出命令将堆栈中的073F送入CS恢复原来的程序的 执行地址。IX=0000BX=0000CX=0000DX=0000SP=O0FDBP=0000 SI=0000 DI=0000iS=0?3FES=073FSS=073FCS=073FIP=01O1MU UP EI PL MZ NA P0 MC173F:0101 0000ADD BX+SI,ALDS:OO0O=CD3.INT 3中断向量的内容是CC。4.中断服务执行时CS指向0070, ip=0008,所以中断服
10、务的起始地址是708H.汇编语言程序设计实验一DEBUG程序使用技巧1 .寄存器和内存开始Debug程序。输入“Q1 ”退出程序。再次启动Debugo输入来显示CPU的当前状态和寄存器中的当前内容。输入“r AX1”和“1234”,AX寄存器中的内容变为1234。输入“r DS1”和“2000”,DS寄存器中的内容变为2000。输入“d DS: 10001”来显示数据段中80H字节数据,把数据抄在这里:000:1000000:1010000:10Z0000:1030000:1040000:1050000:1060000:107000 00-0000 00-0000 00-0000 00-000
11、0 00-0000 00-0000 00-0000 00-000000000000000000输入“f DS: 1000 1100 771”再显示一次这80H字节。判断这条指令的作用是什么?答:从DS:1000地址七,将1100H字节的内容赋值为77H 再输入“d 2000:10001”来显示数据段中80H字节数据。观察与前面的数据有无不同。Hd 2000:10002000:1000 2000:1010 2000:1OZO 2000:1030 2000:1040 2000:1050 2000:106。 2000:10702000:1000 2000:1010 2000:1OZO 2000:10
12、30 2000:1040 2000:1050 2000:106。 2000:107077 7777 7777 7777 7777 7777 7777 7777 777777777777777777777777777777777777777777777777777777777777777777777777777777777777-7777-7777-7777-7777-7777-7777-7777-7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
13、77777777777777UJUUJUUJUJUJUJUUJUJUJUJMJUJ UJUJUJUJUJUUJUJUJUJUJUJUUUJUJ UMJUJUJUJUJUJUJUJUJUUJUUJUJ UUUUUUUUUUUJUUUUUUJUUJUUJUJUJUUJUJUJUUJUJUJUJ UJUUJUUMJUJUUJUJUJUUJUJUJ UUJMJUJUJIJUJUUJUJUUJUJMJ输入“d 1900:0100和“d lfTO:0100L来显示两个存储段中的内容。比拟其中2000:0000 段中的数据。相同段落中的数据相同么?根据你的观察,得出结论,是否程序员可以用不同 的段起始地址和
14、偏移量组合,把不容内容存入相同的内存段中。答:相同段落中的数据相同,程序员可以用不同的段起始地址和偏移量组合,把不容内容存 入相同的内存段中。2 .输入机器码,使用单步和断点退出Debug,再重新启动Debugo输入“1观察CPU的状态,下一条指令是什么??3F:01O0 0000ADD BX+SI,AL答:下一条指令是ADD BX+SI,AL使用两种方式输入一段程序,第一种方式:直接输入机器码。输入来显示程序段中的指令序列。然后输入“dCS:100i”来显示代码段中的数据。观察显示内容。“uCS:100 106i”做反汇编,就是显示出汇编语句。将这几句汇编语句记录下来:-u cs:100 1
15、06073F:0100 0000ADDBX+SUAL073F:010Z 0000ADDBX+SUAL073F:0104 0000ADDBX+SUAL073F:01O6 0000ADDBX+SUAL使用输入观察CPU的状态,使用来跟踪程序,直至最后一条指令执行完毕。注 意,跟踪程序前,耍让IP寄存器中的值是100H。一直监视AX和IP寄存器的内容变化, 尤其是标志位的变化。标志位(外语缩写)标志位名称及外语全称=1=0CF进位标志/Carry FlagCY/Carry/进位NC/No Carry/无进位PF奇偶标志/Parity FlagPE/Parity Even/偶PO/Parity Odd
16、/奇AF辅助进位标志/AuxiliaryCarry FlagAC/Auxiliary Carry/进位NA/No Auxiliary Carry/无进位ZF零标志/Zero FlagZR/Zero/等于零NZ/Not Zero/不等于零SF符号标志/Sign FlagNG/Negative/负PL/Positive/非负TF跟踪标志/Trace FlagIF中断标志/Interrupt FlagEl/Enable Interrupt/允许Dl/Disable Interrupt/禁止DF方向标志/Direction FlagDN/Down/减少UP/增加OF溢出标志/Overflow Flag
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 实验 报告
限制150内