1、masm5masm one1.asm 经过汇编后源程序为: 0 Warning Errors0 Severe Errors 。即为汇编通过3). 用连接程序 link 产生执行文件 exelink one1.obj4).用 DEBUG 调试程序 调用格式如下: F:debug one1.exe此时,DEBUG已将执行程序装入内存,可直接用 g命令运行程序。-gMatch. 对程序进行反汇编:-u0B9B:0000 B89A0B MOV AX,0B9A0003 8ED8 MOV DS,AX0005 8B260400 MOV SP,00040009 8BEC MOV BP,SP000B BE000
2、0 MOV SI,0000000E 8B840000 MOV AX,SI+00000012 8B9C0200 MOV BX,SI+00020016 50PUSHAX0017 53BX0018 58POP0019 5B001A B44CMOVAH,4C001C CD21INT21001E F6EBIMULBL反汇编后,与源程序的要求相符合堆栈指令运行前AX, BX的内容-g16BP=2000UP EI PLAX=3000 BX=5000 CX=002E DX=0000 SP=2000SI=0000 DI=0000DS=0B9A ES=0B8A SS=0B9A CS=0B9B IP=0016 NV
3、 NZ NA PO NC0016 50 PUSH AX堆栈指令执行后 ZX, BX 的值如下所示:-g1AAX=5000 BX=3000 CX=002E DX=0000 SP=2000 BP=2000DS=0B9A ES=0B8A SS=0B9A CS=0B9B IP=001A NV UP EI PLNZ NA PO NC001A B44C MOV AH,4C由以上可知:AX与BX的内容得到了交换5)汇编以及调试中所遇到的问题:1.MOv 语句比较容易出现错误 対源程序进行汇编时无法通过,编程序时应该多注意语法错误。2.使用 debug 进行调试时,忘记让程序只运行到断点之前,导致查找出来 的
4、 AX 与 BX 的内容分并没有进行交换,还是保持原来的值不变,修正后在堆栈 指令前先查出AX与BX的值,堆栈后在次查询 Ax与BX的值,对比之后AX确 实与 BX 的内容交换了。实验二 内存操作数及寻址方法1、 熟练掌握 DEBUG 的常用命令,学会用 DEBUG 调试程序。2、 掌握数据在内存中的存放方式和内存操作数的几种寻址方式。3、 掌握简单指令的执行过程。二实验内容:1、设堆栈指针 SP=2000H,AX=3000H , BX=5000H ;请编一程 序段将 AX 和 BX 的内容进行交换。 请用堆栈作为两寄存器交换内容 的中间存储单元,用字处理程序编辑程序,用 masm.exe 和
5、 link.exe 对源程序进行汇编程和连接,用 DEBUG 调试程序。程序步骤与实验一的第六个题目一致2、用 masm 和 link 对以下程序进行汇编和连接,调试程序在 DEBUG 调试程序状态下进行。用单步执行的方法,分析每条指令源 地址的形成过程,当数据传送完毕时, AX中的内容是什么。ORG 0300HA DB 12H,23H,34H,45H,56H,67H,78H,89H,9AH MOV AX,DATAMOV AX,BXMOV AX,0300HMOV AX,0300HMOV AX,BXMOV SI,2MOV AX,0001BXMOV AX,BXSIMOV AX,0001BXSIOB
6、J,命令格式如下:1.在 DOS 环境下, 用汇编程序 MASM 对源文件汇编产生目标文件masm one1.asm经过汇编后源程序为: 即为汇编通过2.用连接程序 link 产生执行文件 exe3.用 debug 调试程序:Match.4. 对程序进行反汇编:180E:0000 B8DD17AX,17DD0003 8ED8DS,AX0005 8BC3AX,BX0007 B80003AX,0300000A B80003000D 8B07AX,BX000F BE0200SI,00020012 8B4701AX,BX+010015 8B00AX,BX+SI0017 8B4001AX,BX+SI+0
7、01E C406FF76LESAX,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,9AH DATA ENDS PROGNAM SEGMENTMOV DX,0300HMOV BX,DX0005 BA0003DX,03000008 8BDABX,DX000A 8B07000C BE0200000F 8B4701001
8、2 8B000014 8B40010017 B44C0019 CD21INT 21001B 057183ADDAX,8371使用单步执行方法分析每条指令源地址的形成过程:将数据段的首地址存入寄存器 AX中-tAX=17DD BX=0000 CX=032B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=17CD ES=17CD SS=17DD CS=180E IP=0003 NV UP EI PL NZ NA PO NC 180E:把AX的值作为DS的首地址AX=17DD BX=0000 CX=032B DX=0000 SP=0000 BP=0000 SI
9、=0000 DI=0000 DS=17DD ES=17CD SS=17DD CS=180E IP=0005 NV UP EI PL NZ NA PO NC 180E:0005 BA0003 MOV DX,0300AX=17DD BX=0000 CX=032B DX=0300 SP=0000 BP=0000 SI=0000 DI=0000 DS=17DD ES=17CD SS=17DD CS=180E IP=0008 NV UP EI PL NZ NA PO NC 180E:0008 8BDA MOV BX,DXAX=17DD BX=0300 CX=032B DX=0300 SP=0000 BP
10、=0000 SI=0000 DI=0000 DS=17DD ES=17CD SS=17DD CS=180E IP=000A NV UP EI PL NZ NA PO NC 180E:000A 8B07 MOV AX,BXDS:0300=2312将偏移量BX存到寄存器AX中AX=2312 BX=0300 CX=032B DX=0300 SP=0000 BP=0000 SI=0000 DI=0000 DS=17DD ES=17CD SS=17DD CS=180E IP=000C NV UP EI PL NZ NA PO NC 180E:000C BE0200 MOV SI,0002将 0002 赋
11、值给 SIAX=2312 BX=0300 CX=032B DX=0300 SP=0000 BP=0000 SI=0002 DI=0000 DS=17DD ES=17CD SS=17DD CS=180E IP=000F NV UP EI PL NZ NA PO NC 180E:000F 8B4701 MOV AX,BX+010301=3423AX=3423 BX=0300 CX=032B DX=0300 SP=0000 BP=0000 SI=0002 DI=0000 DS=17DD ES=17CD SS=17DD CS=180E IP=0012 NV UP EI PL NZ NA PO NC 1
12、80E:0012 8B00 MOV AX,BX+SI0302=4534AX=4534 BX=0300 CX=032B DX=0300 SP=0000 BP=0000 SI=0002 DI=0000 DS=17DD ES=17CD SS=17DD CS=180E IP=0014 NV UP EI PL NZ NA PO NC 180E:0014 8B4001 MOV AX,BX+SI+010303=5645AX=5645 BX=0300 CX=032B DX=0300 SP=0000 BP=0000 SI=0002 DI=0000 DS=17DD ES=17CD SS=17DD CS=180E
13、IP=0017 NV UP EI PL NZ NA PO NCMOV AH,4C ;系统功能调用的功能号: 4C 功能:带返回码结束AX=4C45 BX=0300 CX=032B DX=0300 SP=0000 BP=0000 SI=0002 DI=0000 DS=17DD ES=17CD SS=17DD CS=180E IP=0019 NV UP EI PL NZ NA PO NC 180E:0019 CD21 INT 21段中指;有以上可知经过调试后 AX=5645H实验三 算术运算指令一实验目的1学习算术运算指令的用法。2熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。二实
14、验内容编写三个完整的汇编语言源程序,完成以下计算。其中 X、 Y、 Z、 R、 W 均为存放 16 位带符号数单元的地址。ZJ W +( Z X)(2)Z J W ( X + 6) ( R + 9)(3)Z J( W*X ) / (Y + 6), RJ余数三实验操作步骤:( 1)ZJW+(Z-X )1 ) 实验的源程序如下:X DW 2567HW DW 5841HZ DW 36C2HDA TAMOV AX,XSUB Z,AX ;(Z X );W( Z X)MOV AX,W ADC Z,AXINT 21H PROGNAM ENDS2)对程序进行反汇编:001B FE8946F6 DEC BYTE
15、 PTR BX+DI+F646001F 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 BX=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 NC 0B9B:000F A10200 MOV AX,0
16、002 DS:0002=5841查询执行后的结果:0000 67 25 41 58 5B 11 00 00-00 00 00 00 00 00 00 00 g%AX 36c2H-2567H=115BH 满足题意得到 Z-X 的值-t2DI=0000DS=0B9A ES=0B8A SS=0B9A CS=0B9B IP=0012 NV UP EI PL NZ AC PO NC0012 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=0B
17、9A CS=0B9B IP=0016 NV UP EI PL NZ NA PE NC0016 B44C MOV AH,4C0000, 000f0000 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) Z J W ( X + 6) ( R + 9)X DW 2674HW DW 7046HR DW 310CHZ DW ? MOV AX,DATA MOV DS,AX MOV SI,0 ADC X,0006H ADC R,0009H MOV AX,X SUB W,AX M
18、OV AX,R SUB W,AX MOV AX,W MOV Z,AX MOV AH,4CHMOV AX,0B9AMOV SI,0000WORD PTR 0000,+06PROGNAM ENDS END START 对程序进行反汇编: -u 0B9B:0000 B89A0B 0B9B:0003 8ED8 0B9B:0005 BE0000 0B9B:0008 06 ADC-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
19、 PL NZ AC PO NC 0B9B:0012 A10000 MOV AX,0000 DS:0000=267A0000,000f0000 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=F8B7BX=0000 CX=003A DX=0000 SP=0000 BP=0000 SI=0000DS=0B9AES=0B8A SS=0B9A CS=0B9B IP=0026 NV UP EI NG NZ NA PE CY0026 B44C
20、 MOV AH,4C00007A 26 B7 18 15 31 B7 18-00 00 00 00 00 00 00 00 z&.1 0010B8 9A 0B 8E D8 BE 00 00-83 16 00 00 06 83 16 04 002000 09 A1 00 00 29 06 02-00 A1 04 00 29 06 02 00 ) ).0030A1 02 00 A3 06 00 B4 4C-CD 21 FF 76 F6 B8 D2 05 L.!.v 004050 FF 36 24 21 E8 18 64-83 C4 08 C4 5E 06 26 83P.6$!.d.d&.00507
21、F 06 00 74 09 A1 A4 07-39 86 72 FF 76 0A FF 36006024 21 B8 DD 05 EB 30 90-80 3E 60 08 00 74 21 8B00709E 72 FF 8B 36 D2 25 80-38 00 74 0A FF 36 24 21$!.0.t!.r.6.%.8.t.6$!7046H-267AH-3115H=187BH;实现了: W (X + 6)-( R + 9)(3) Z(W*X ) / (Y + 6), R余数1.源程序如下: DATA SEGMENTX DW 5201HW DW 1357HY DW 3671H R DW ?
22、 Z DW ?DATA START:MOV DS,AX MOV AX,X IMUL W ADD Y,0006H IDIV Y MOV Z,AX MOV R,DX MOV AH,4CH INT 21H0000 B89A0B0005 A100000008 F72E0200 0B9B:000C 06 ADD 0B9B:0011 F73E04000015 A308000018 MOV001C B44CPROGNAM ENDS END STARTMOV AX,0000IMUL WORD PTR 0002WORD PTR 0004,+06IDIV WORD PTR 0004MOV 0008,AX0006,
23、DXMOV AH,4C001E CD21-gcAX=F157 BX=0000 CX=0030 DX=0631 SP=0000 BP=0000 SI=0000 DI=0000DS=0B9A ES=0B8A SS=0B9A CS=0B9B IP=000C OV UP EI PL NZ NA PO CY000C 06 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 NC 0B9B:0015 A30800 MOV 0008,AX DS:0008=0000-g1cDS=0B9A ES=0B8A SS=0B9A CS=0B9B IP=001C NV UP EI PL NZ NA PE NC 0B9B:001C B44C MOV AH,4C000665 14-1E 1D 00 00 00 00 00 00B8 9A 0
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1