版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 实验一:DEBUG的启动及其基本命令的使用一实验目的:掌握DEBUG 的基本命令及其功能二实验操作步骤:6.设堆栈指针SP=2000H,AX=3000H,BX=5000H;请仿照例程的格式编一程序段将AX和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。1)调用字处理程序建立源程序文件,源程序如下:DATA SEGMENT DATA1 DW 3000H,5000H XX DW 2000HDATA ENDSPROGNAM SEGMENT ASSUME CS:PROGNAM,DS:DATA START: MOV AX,DATA MOV DS,A
2、X MOV SP,XX MOV BP,SP MOV SI,0 MOV AX,DATA1SI MOV BX,DATA1SI+2 PUSH AX PUSH BX POP AX POP BX MOV AH,4CH INT 21HPROGNAM ENDS END START2).在DOS环境下,用汇编程序MASM对源文件汇编产生目标文件OBJ,命令格式如下: F:masm5masm one1.asm经过汇编后源程序为:0 Warning Errors0 Severe Errors。即为汇编通过3). 用连接程序link产生执行文件exeF:masm5link one1.obj4).用DEBUG调试程序
3、调用格式如下:F:masm5debug one1.exe此时,DEBUG已将执行程序装入内存,可直接用g命令运行程序。-gMatch.对程序进行反汇编:-u0B9B:0000 B89A0B MOV AX,0B9A0B9B:0003 8ED8 MOV DS,AX0B9B:0005 8B MOV SP,00040B9B:0009 8BEC MOV BP,SP0B9B:000B BE0000 MOV SI,00000B9B:000E 8B MOV AX,SI+00000B9B:0012 8B9C0200 MOV BX,SI+00020B9B:0016 50 PUSH AX0B9B:0017 53 P
4、USH BX0B9B:0018 58 POP AX0B9B:0019 5B POP BX0B9B:001A B44C MOV AH,4C0B9B:001C CD21 INT 210B9B:001E F6EB IMUL BL反汇编后,与源程序的要求相符合堆栈指令运行前AX,BX的内容-g16AX=3000 BX=5000 CX=002E DX=0000 SP=2000 BP=2000 SI=0000 DI=0000DS=0B9A ES=0B8A SS=0B9A CS=0B9B IP=0016 NV UP EI PL NZ NA PO NC0B9B:0016 50 PUSH AX堆栈指令执行后ZX
5、,BX的值如下所示:-g1AAX=5000 BX=3000 CX=002E DX=0000 SP=2000 BP=2000 SI=0000 DI=0000DS=0B9A ES=0B8A SS=0B9A CS=0B9B IP=001A NV UP EI PL NZ NA PO NC0B9B:001A B44C MOV AH,4C由以上可知:AX与BX的内容得到了交换5)汇编以及调试中所遇到的问题:1.MOv语句比较容易出现错误対源程序进行汇编时无法通过,编程序时应该多注意语法错误。2.使用debug进行调试时,忘记让程序只运行到断点之前,导致查找出来的AX与BX的内容分并没有进行交换,还是保持原
6、来的值不变,修正后在堆栈指令前先查出AX与BX的值,堆栈后在次查询Ax与BX的值,对比之后AX确实与BX的内容交换了。实验二 内存操作数及寻址方法一实验目的:1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。2、掌握数据在内存中的存放方式和内存操作数的几种寻址方式。3、掌握简单指令的执行过程。二实验内容:1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用字处理程序编辑程序,用masm.exe和link.exe对源程序进行汇编程和连接,用DEBUG调试程序。程序步骤与实验一的第六个题
7、目一致2、用masm和link 对以下程序进行汇编和连接,调试程序在DEBUG调试程序状态下进行。用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么。DATA SEGMENT ORG 0300H A DB 12H,23H,34H,45H,56H,67H,78H,89H,9AHDATA ENDSPROGNAM SEGMENT ASSUME CS:PROGNAM,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,BX MOV AX,0300H MOV AX,0300H MOV AX,BX MOV SI,2 MOV AX,000
8、1BX MOV AX,BXSI MOV AX,0001BXSI MOV AH,4CH INT 21H PROGNAM ENDS END START1.在DOS环境下,用汇编程序MASM对源文件汇编产生目标文件OBJ,命令格式如下: F:masm5masm one1.asm经过汇编后源程序为:0 Warning Errors0 Severe Errors。即为汇编通过2. 用连接程序link产生执行文件exeF:masm5link one1.obj3.用debug调试程序:F:masm5debug one1.exe-gMatch.4.对程序进行反汇编:-u180E:0000 B8DD17 MOV
9、 AX,17DD180E:0003 8ED8 MOV DS,AX180E:0005 8BC3 MOV AX,BX180E:0007 B80003 MOV AX,0300180E:000A B80003 MOV AX,0300180E:000D 8B07 MOV AX,BX180E:000F BE0200 MOV SI,0002180E:0012 8B4701 MOV AX,BX+01180E:0015 8B00 MOV AX,BX+SI180E:0017 8B4001 MOV AX,BX+SI+01180E:001A B44C MOV AH,4C180E:001C CD21 INT 21180
10、E:001E C406FF76 LES AX,76FF由第五行:180E:000A B80003 MOV AX,0300并没有执行源程序中的:MOV AX,0300H指令,所以执行后AX的结果为0000;应该对程序进行修改修改后的原程序如下:DATA SEGMENT ORG 0300H A DB 12H,23H,34H,45H,56H,67H,78H,89H,9AHDATA ENDSPROGNAM SEGMENT ASSUME CS:PROGNAM,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,0300H MOV BX,DX MOV AX,BX MOV
11、 SI,2 MOV AX,0001BX MOV AX,BXSI MOV AX,0001BXSI MOV AH,4CH INT 21H PROGNAM ENDS END START-u180E:0000 B8DD17 MOV AX,17DD180E:0003 8ED8 MOV DS,AX180E:0005 BA0003 MOV DX,0300180E:0008 8BDA MOV BX,DX180E:000A 8B07 MOV AX,BX180E:000C BE0200 MOV SI,0002180E:000F 8B4701 MOV AX,BX+01180E:0012 8B00 MOV AX,BX
12、+SI180E:0014 8B4001 MOV AX,BX+SI+01180E:0017 B44C MOV AH,4C180E:0019 CD21 INT 21180E:001B ADD AX,8371180E:001E C406FF76 LES AX,76FF使用单步执行方法分析每条指令源地址的形成过程:将数据段的首地址存入寄存器AX中-tAX=17DD BX=0000 CX=032B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=17CD ES=17CD SS=17DD CS=180E IP=0003 NV UP EI PL NZ NA PO NC18
13、0E:0003 8ED8 MOV DS,AX把AX的值作为DS的首地址-tAX=17DD BX=0000 CX=032B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=17DD ES=17CD SS=17DD CS=180E IP=0005 NV UP EI PL NZ NA PO NC180E:0005 BA0003 MOV DX,0300-tAX=17DD BX=0000 CX=032B DX=0300 SP=0000 BP=0000 SI=0000 DI=0000DS=17DD ES=17CD SS=17DD CS=180E IP=0008 NV U
14、P EI PL NZ NA PO NC180E:0008 8BDA MOV BX,DX-tAX=17DD BX=0300 CX=032B DX=0300 SP=0000 BP=0000 SI=0000 DI=0000DS=17DD ES=17CD SS=17DD CS=180E IP=000A NV UP EI PL NZ NA PO NC180E:000A 8B07 MOV AX,BX DS:0300=2312将偏移量BX存到寄存器AX中-tAX=2312 BX=0300 CX=032B DX=0300 SP=0000 BP=0000 SI=0000 DI=0000DS=17DD ES=17
15、CD SS=17DD CS=180E IP=000C NV UP EI PL NZ NA PO NC180E:000C BE0200 MOV SI,0002将0002赋值给SI-tAX=2312 BX=0300 CX=032B DX=0300 SP=0000 BP=0000 SI=0002 DI=0000DS=17DD ES=17CD SS=17DD CS=180E IP=000F NV UP EI PL NZ NA PO NC180E:000F 8B4701 MOV AX,BX+01 DS:0301=3423-tAX=3423 BX=0300 CX=032B DX=0300 SP=0000
16、BP=0000 SI=0002 DI=0000DS=17DD ES=17CD SS=17DD CS=180E IP=0012 NV UP EI PL NZ NA PO NC180E:0012 8B00 MOV AX,BX+SI DS:0302=4534-tAX=4534 BX=0300 CX=032B DX=0300 SP=0000 BP=0000 SI=0002 DI=0000DS=17DD ES=17CD SS=17DD CS=180E IP=0014 NV UP EI PL NZ NA PO NC180E:0014 8B4001 MOV AX,BX+SI+01 DS:0303=5645-
17、tAX=5645 BX=0300 CX=032B DX=0300 SP=0000 BP=0000 SI=0002 DI=0000DS=17DD ES=17CD SS=17DD CS=180E IP=0017 NV UP EI PL NZ NA PO NC180E:0017 B44C MOV AH,4C;系统功能调用的功能号:4C 功能:带返回码结束-tAX=4C45 BX=0300 CX=032B DX=0300 SP=0000 BP=0000 SI=0002 DI=0000DS=17DD ES=17CD SS=17DD CS=180E IP=0019 NV UP EI PL NZ NA PO
18、 NC180E:0019 CD21 INT 21段中指;有以上可知经过调试后AX=5645H实验三 算术运算指令一实验目的1学习算术运算指令的用法。2熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。二实验内容编写三个完整的汇编语言源程序,完成以下计算。其中X、Y、Z、R、W均为存放16位带符号数单元的地址。(1)ZW(ZX)(2)ZW(X6)(R9)(3)Z(W*X)/(Y6),R余数三实验操作步骤:(1)ZW+(Z-X)1)实验的源程序如下: DATA SEGMENT X DW 2567H W DW 5841H Z DW 36C2H DATA ENDS PROGNAM SEGM
19、ENT ASSUME CS:PROGNAM,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,0 MOV AX,X SUB Z,AX ;(ZX) MOV AX,W ADC Z,AX ;W(ZX) MOV AH,4CH INT 21H PROGNAM ENDS END START2)对程序进行反汇编:-u0B9B:0000 B89A0B MOV AX,0B9A0B9B:0003 8ED8 MOV DS,AX0B9B:0005 BE0000 MOV SI,00000B9B:0008 A10000 MOV AX,00000B9B:000B SUB 0004,AX
20、0B9B:000F A10200 MOV AX,00020B9B:0012 ADC 0004,AX0B9B:0016 B44C MOV AH,4C0B9B:0018 CD21 INT 210B9B:001A 46 INC SI0B9B:001B FE8946F6 DEC BYTE PTR BX+DI+F6460B9B:001F EB06 JMP 0027反汇编后,以上结果可以看出与源程序相符合查询:-d0b9a:0000,000f0B9A:0000 67 25 41 58 C2 36 00 00-00 00 00 00 00 00 00 00 g%AX.6.执行到断点前-gfAX=2567 B
21、X=0000 CX=002A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=0B9A ES=0B8A SS=0B9A CS=0B9B IP=000F NV UP EI PL NZ AC PO NC0B9B:000F A10200 MOV AX,0002 DS:0002=5841查询执行后的结果:-d0b9a:0000,000f0B9A:0000 67 25 41 58 5B 11 00 00-00 00 00 00 00 00 00 00 g%AX.36c2H-2567H=115BH 满足题意得到Z-X的值-t2AX=5841 BX=0000 CX=002
22、A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=0B9A ES=0B8A SS=0B9A CS=0B9B IP=0012 NV UP EI PL NZ AC PO NC0B9B:0012 ADC 0004,AX DS:0004=115BAX=5841 BX=0000 CX=002A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=0B9A ES=0B8A SS=0B9A CS=0B9B IP=0016 NV UP EI PL NZ NA PE NC0B9B:0016 B44C MOV AH,4C-d0b9a:0000,
23、000f0B9A:0000 67 25 41 58 9C 69 00 00-00 00 00 00 00 00 00 00 g%AX.i.115BH+5841H=699CH 得到W+(Z-X)的值(2)ZW(X6)(R9)DATA SEGMENT X DW 2674H W DW 7046H R DW 310CH Z DW ? DATA ENDS PROGNAM SEGMENT ASSUME CS:PROGNAM,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,0 ADC X,0006H ADC R,0009H MOV AX,X SUB W,AX MOV
24、AX,R SUB W,AX MOV AX,W MOV Z,AX MOV AH,4CH INT 21H PROGNAM ENDS END START对程序进行反汇编:-u0B9B:0000 B89A0B MOV AX,0B9A0B9B:0003 8ED8 MOV DS,AX0B9B:0005 BE0000 MOV SI,00000B9B:0008 ADC WORD PTR 0000,+060B9B:000D ADC WORD PTR 0004,+090B9B:0012 A10000 MOV AX,00000B9B:0015 SUB 0002,AX0B9B:0019 A10400 MOV AX,0
25、0040B9B:001C SUB 0002,AX-u0B9B:0020 A10200 MOV AX,00020B9B:0023 A30600 MOV 0006,AX0B9B:0026 B44C MOV AH,4C0B9B:0028 CD21 INT 210B9B:002A FF76F6 PUSH BP-0A0B9B:002D B8D205 MOV AX,05D20B9B:0030 50 PUSH AX0B9B:0031 FF PUSH 21240B9B:0035 E81864 CALL 64500B9B:0038 83C408 ADD SP,+080B9B:003B C45E06 LES BX
26、,BP+060B9B:003E 26 ES:0B9B:003F 837F0600 CMP WORD PTR BX+06,+00-d0b9a:0000,000F0B9A:0000 7A 26 46 50 15 31 00 00-00 00 00 00 00 00 00 00 z&FP.1.-g12AX=0B9A BX=0000 CX=003A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=0B9A ES=0B8A SS=0B9A CS=0B9B IP=0012 NV UP EI PL NZ AC PO NC0B9B:0012 A10000 MOV AX,00
27、00 DS:0000=267A-d0b9a:0000,000f0B9A:0000 7A 26 46 50 15 31 00 00-00 00 00 00 00 00 00 00 z&FP.1.2674H+6=267AH;310cH+9=3115H;分别表示X+6,R+9的值;-g26AX=F8B7 BX=0000 CX=003A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=0B9A ES=0B8A SS=0B9A CS=0B9B IP=0026 NV UP EI NG NZ NA PE CY0B9B:0026 B44C MOV AH,4C-d0b9a:0
28、0000B9A:0000 7A 26 B7 18 15 31 B7 18-00 00 00 00 00 00 00 00 z&.1.0B9A:0010 B8 9A 0B 8E D8 BE 00 00-83 16 00 00 06 83 16 04 .0B9A:0020 00 09 A1 00 00 29 06 02-00 A1 04 00 29 06 02 00 .).).0B9A:0030 A1 02 00 A3 06 00 B4 4C-CD 21 FF 76 F6 B8 D2 05 .L.!.v.0B9A:0040 50 FF 36 24 21 E8 18 64-83 C4 08 C4 5
29、E 06 26 83 P.6$!.d.&.0B9A:0050 7F 06 00 74 09 A1 A4 07-39 86 72 FF 76 0A FF 36 .t.9.r.v.60B9A:0060 24 21 B8 DD 05 EB 30 90-80 3E 60 08 00 74 21 8B $!.0.t!.0B9A:0070 9E 72 FF 8B 36 D2 25 80-38 00 74 0A FF 36 24 21 .r.6.%.8.t.6$!7046H-267AH-3115H=187BH;实现了:W(X6)(R9)(3)Z(W*X)/(Y6),R余数1.源程序如下:DATA SEGME
30、NT X DW 5201H W DW 1357H Y DW 3671H R DW ? Z DW ? DATA ENDS PROGNAM SEGMENT ASSUME CS:PROGNAM,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,X IMUL W ADD Y,0006H IDIV Y MOV Z,AX MOV R,DX MOV AH,4CH INT 21H PROGNAM ENDS END START-u0B9B:0000 B89A0B MOV AX,0B9A0B9B:0003 8ED8 MOV DS,AX0B9B:0005 A10000 MOV
31、AX,00000B9B:0008 F72E0200 IMUL WORD PTR 00020B9B:000C ADD WORD PTR 0004,+060B9B:0011 F73E0400 IDIV WORD PTR 00040B9B:0015 A30800 MOV 0008,AX0B9B:0018 MOV 0006,DX0B9B:001C B44C MOV AH,4C0B9B:001E CD21 INT 21-gcAX=F157 BX=0000 CX=0030 DX=0631 SP=0000 BP=0000 SI=0000 DI=0000DS=0B9A ES=0B8A SS=0B9A CS=0
32、B9B IP=000C OV UP EI PL NZ NA PO CY0B9B:000C ADD WORD PTR 0004,+06 DS:0004=3671-g15AX=1D1E BX=0000 CX=0030 DX=1465 SP=0000 BP=0000 SI=0000 DI=0000DS=0B9A ES=0B8A SS=0B9A CS=0B9B IP=0015 NV UP EI PL NZ NA PE NC0B9B:0015 A30800 MOV 0008,AX DS:0008=0000-g1cAX=1D1E BX=0000 CX=0030 DX=1465 SP=0000 BP=000
33、0 SI=0000 DI=0000DS=0B9A ES=0B8A SS=0B9A CS=0B9B IP=001C NV UP EI PL NZ NA PE NC0B9B:001C B44C MOV AH,4C-d0b9a:00060B9A:0000 65 14-1E 1D 00 00 00 00 00 00 e.0B9A:0010 B8 9A 0B 8E D8 A1 00 00-F7 2E 02 00 83 06 04 00 .0B9A:0020 06 F7 3E 04 00 A3 08 00-89 16 06 00 B4 4C CD 21 .L.!0B9A:0030 06 90 C7 46
34、F6 00 00 FF-76 F8 FF 76 F6 B8 D2 05 .F.v.v.0B9A:0040 50 FF 36 24 21 E8 18 64-83 C4 08 C4 5E 06 26 83 P.6$!.d.&.0B9A:0050 7F 06 00 74 09 A1 A4 07-39 86 72 FF 76 0A FF 36 .t.9.r.v.60B9A:0060 24 21 B8 DD 05 EB 30 90-80 3E 60 08 00 74 21 8B $!.0.t!.0B9A:0070 9E 72 FF 8B 36 D2 25 80-38 00 74 0A FF 36 24
35、21 .r.6.%.8.t.6$!0B9A:0080 B8 E5 05 EB 12 90 .实现了Z=(W*X)/(Y6)=1465H,R1D1EH实验四 查表程序设计一实验目的:1、熟练掌握编写汇编语言原程序的基本方法和基本框架。2、掌握查表法和查表指令XLAT。3、熟练使用DEBUG调试程序。二实验内容:用查表的方法将一位十六进制数转换成与它相应的ASCII码,并将结果存放到ASCI单元中。三编程提示:既然指定用查表的方法,那么首先要建立一个表TABLE。我们在表中按照十六进制数从小到大的顺序放入他们对应的ASCII码值。DATA SEGMENTTABLE DB 30H,31H,32H,33H,34H,35H,36H,37H DB 38H,39H,41H,42H,43H,44H,45H,46HHEX DB X ;X为待转换的十六进制数ASCI DB ?;存放转换后的ASCII码DATA ENDS四、实验操作:1.实验源程序如下: DATA SEGMENT TABLE DB 30H,31H,32H,33H,34H,35H,36H,37H DB 38H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中式园林景观分析与房地产应用
- 2026年环保产业国际品牌发展前景研究报告
- 2026年仓储设备行业运维与智能化报告
- 2026年美妆行业终端零售与顾客忠诚度研究报告001
- 2026年医疗级医疗设备创新报告
- 2026年办公软件国产化市场趋势预测报告001
- 2026年珠宝首饰行业分析与金融服务报告
- 2026年大数据行业应用场景与商业价值分析报告
- 2026年行业报告:智慧园区安防与运维一体化解决方案市场分析及预测
- 2026年纺织服装行业ESG评级与绿色生产报告
- 2026年新教材人教版九年级上册英语期中复习:Unit 1-4+期中5套测试卷汇编(含答案)
- 河北省邯郸市2025-2026学年高一上学期期中联考语文试题及答案
- ESC 2026新版心力衰竭管理指南精读
- 2026智联招聘笔试题库及答案
- 2026版《药物临床试验质量管理规范》GCP考试题库(含标准答案+解析)
- EDA技术及应用项目教程 教学大纲
- 中医护理评估
- 2025年度中国展览数据统计报告
- 2026年中考作文押题指导
- 泌尿外科副主任医师述职报告
- T/CCMA 0160-2023非公路洒水车
评论
0/150
提交评论