微机实验报告最新.docx
- 文档编号:20142338
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:22
- 大小:21.01KB
微机实验报告最新.docx
《微机实验报告最新.docx》由会员分享,可在线阅读,更多相关《微机实验报告最新.docx(22页珍藏版)》请在冰豆网上搜索。
微机实验报告最新
实验一:
DEBUG的启动及其基本命令的使用
一.实验目的:
掌握DEBUG的基本命令及其功能
二.实验操作步骤:
6.设堆栈指针SP=2000H,AX=3000H,BX=5000H;请仿照例程的格式编一程序段将AX和BX的内容进行交换。
请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。
1)调用字处理程序建立源程序文件,源程序如下:
DATASEGMENT
DATA1DW3000H,5000H
XXDW2000H
DATAENDS
PROGNAMSEGMENT
ASSUMECS:
PROGNAM,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSP,XX
MOVBP,SP
MOVSI,0
MOVAX,DATA1[SI]
MOVBX,DATA1[SI+2]
PUSHAX
PUSHBX
POPAX
POPBX
MOVAH,4CH
INT21H
PROGNAMENDS
ENDSTART
2).在DOS环境下,用汇编程序MASM对源文件汇编产生目标文件OBJ,命令格式如下:
F:
\masm5>masmone1.asm
经过汇编后源程序为:
0WarningErrors
0SevereErrors。
即为汇编通过
3).用连接程序link产生执行文件exe
F:
\masm5>linkone1.obj
4).用DEBUG调试程序
调用格式如下:
F:
\masm5>debugone1.exe
此时,DEBUG已将执行程序装入内存,可直接用g命令运行程序。
-g
Match.
对程序进行反汇编:
-u
0B9B:
0000B89A0BMOVAX,0B9A
0B9B:
00038ED8MOVDS,AX
0B9B:
00058B260400MOVSP,[0004]
0B9B:
00098BECMOVBP,SP
0B9B:
000BBE0000MOVSI,0000
0B9B:
000E8B840000MOVAX,[SI+0000]
0B9B:
00128B9C0200MOVBX,[SI+0002]
0B9B:
001650PUSHAX
0B9B:
001753PUSHBX
0B9B:
001858POPAX
0B9B:
00195BPOPBX
0B9B:
001AB44CMOVAH,4C
0B9B:
001CCD21INT21
0B9B:
001EF6EBIMULBL
反汇编后,与源程序的要求相符合
堆栈指令运行前AX,BX的内容
-g16
AX=3000BX=5000CX=002EDX=0000SP=2000BP=2000SI=0000DI=0000
DS=0B9AES=0B8ASS=0B9ACS=0B9BIP=0016NVUPEIPLNZNAPONC
0B9B:
001650PUSHAX
堆栈指令执行后ZX,BX的值如下所示:
-g1A
AX=5000BX=3000CX=002EDX=0000SP=2000BP=2000SI=0000DI=0000
DS=0B9AES=0B8ASS=0B9ACS=0B9BIP=001ANVUPEIPLNZNAPONC
0B9B:
001AB44CMOVAH,4C
由以上可知:
AX与BX的内容得到了交换
5)汇编以及调试中所遇到的问题:
1.MOv语句比较容易出现错误
対源程序进行汇编时无法通过,编程序时应该多注意语法错误。
2.使用debug进行调试时,忘记让程序只运行到断点之前,导致查找出来的AX与BX的内容分并没有进行交换,还是保持原来的值不变,修正后在堆栈指令前先查出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调试程序。
程序步骤与实验一的第六个题目一致
2、用masm和link对以下程序进行汇编和连接,调试程序在DEBUG调试程序状态下进行。
用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么。
DATASEGMENT
ORG0300H
ADB12H,23H,34H,45H,56H,67H,78H,89H,9AH
DATAENDS
PROGNAMSEGMENT
ASSUMECS:
PROGNAM,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,BX
MOVAX,0300H
MOVAX,[0300H]
MOVAX,[BX]
MOVSI,2
MOVAX,0001[BX]
MOVAX,[BX][SI]
MOVAX,0001[BX][SI]
MOVAH,4CH
INT21H
PROGNAMENDS
ENDSTART
1.在DOS环境下,用汇编程序MASM对源文件汇编产生目标文件OBJ,命令格式如下:
F:
\masm5>masmone1.asm
经过汇编后源程序为:
0WarningErrors
0SevereErrors。
即为汇编通过
2.用连接程序link产生执行文件exe
F:
\masm5>linkone1.obj
3.用debug调试程序:
F:
\masm5>debugone1.exe
-g
Match.
4.对程序进行反汇编:
-u
180E:
0000B8DD17MOVAX,17DD
180E:
00038ED8MOVDS,AX
180E:
00058BC3MOVAX,BX
180E:
0007B80003MOVAX,0300
180E:
000AB80003MOVAX,0300
180E:
000D8B07MOVAX,[BX]
180E:
000FBE0200MOVSI,0002
180E:
00128B4701MOVAX,[BX+01]
180E:
00158B00MOVAX,[BX+SI]
180E:
00178B4001MOVAX,[BX+SI+01]
180E:
001AB44CMOVAH,4C
180E:
001CCD21INT21
180E:
001EC406FF76LESAX,[76FF]
由第五行:
180E:
000AB80003MOVAX,0300
并没有执行源程序中的:
MOVAX,[0300H]指令,所以执行后AX的结果为0000;
应该对程序进行修改
修改后的原程序如下:
DATASEGMENT
ORG0300H
ADB12H,23H,34H,45H,56H,67H,78H,89H,9AH
DATAENDS
PROGNAMSEGMENT
ASSUMECS:
PROGNAM,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,0300H
MOVBX,DX
MOVAX,[BX]
MOVSI,2
MOVAX,0001[BX]
MOVAX,[BX][SI]
MOVAX,0001[BX][SI]
MOVAH,4CH
INT21H
PROGNAMENDS
ENDSTART
-u
180E:
0000B8DD17MOVAX,17DD
180E:
00038ED8MOVDS,AX
180E:
0005BA0003MOVDX,0300
180E:
00088BDAMOVBX,DX
180E:
000A8B07MOVAX,[BX]
180E:
000CBE0200MOVSI,0002
180E:
000F8B4701MOVAX,[BX+01]
180E:
00128B00MOVAX,[BX+SI]
180E:
00148B4001MOVAX,[BX+SI+01]
180E:
0017B44CMOVAH,4C
180E:
0019CD21INT21
180E:
001B057183ADDAX,8371
180E:
001EC406FF76LESAX,[76FF]
使用单步执行方法分析每条指令源地址的形成过程:
将数据段的首地址存入寄存器AX中
-t
AX=17DDBX=0000CX=032BDX=0000SP=0000BP=0000SI=0000DI=0000
DS=17CDES=17CDSS=17DDCS=180EIP=0003NVUPEIPLNZNAPONC
180E:
00038ED8MOVDS,AX
把AX的值作为DS的首地址
-t
AX=17DDBX=0000CX=032BDX=0000SP=0000BP=0000SI=0000DI=0000
DS=17DDES=17CDSS=17DDCS=180EIP=0005NVUPEIPLNZNAPONC
180E:
0005BA0003MOVDX,0300
-t
AX=17DDBX=0000CX=032BDX=0300SP=0000BP=0000SI=0000DI=0000
DS=17DDES=17CDSS=17DDCS=180EIP=0008NVUPEIPLNZNAPONC
180E:
00088BDAMOVBX,DX
-t
AX=17DDBX=0300CX=032BDX=0300SP=0000BP=0000SI=0000DI=0000
DS=17DDES=17CDSS=17DDCS=180EIP=000ANVUPEIPLNZNAPONC
180E:
000A8B07MOVAX,[BX]DS:
0300=2312
将偏移量BX存到寄存器AX中
-t
AX=2312BX=0300CX=032BDX=0300SP=0000BP=0000SI=0000DI=0000
DS=17DDES=17CDSS=17DDCS=180EIP=000CNVUPEIPLNZNAPONC
180E:
000CBE0200MOVSI,0002
将0002赋值给SI
-t
AX=2312BX=0300CX=032BDX=0300SP=0000BP=0000SI=0002DI=0000
DS=17DDES=17CDSS=17DDCS=180EIP=000FNVUPEIPLNZNAPONC
180E:
000F8B4701MOVAX,[BX+01]DS:
0301=3423
-t
AX=3423BX=0300CX=032BDX=0300SP=0000BP=0000SI=0002DI=0000
DS=17DDES=17CDSS=17DDCS=180EIP=0012NVUPEIPLNZNAPONC
180E:
00128B00MOVAX,[BX+SI]DS:
0302=4534
-t
AX=4534BX=0300CX=032BDX=0300SP=0000BP=0000SI=0002DI=0000
DS=17DDES=17CDSS=17DDCS=180EIP=0014NVUPEIPLNZNAPONC
180E:
00148B4001MOVAX,[BX+SI+01]DS:
0303=5645
-t
AX=5645BX=0300CX=032BDX=0300SP=0000BP=0000SI=0002DI=0000
DS=17DDES=17CDSS=17DDCS=180EIP=0017NVUPEIPLNZNAPONC
180E:
0017B44CMOVAH,4C
;系统功能调用的功能号:
4C功能:
带返回码结束
-t
AX=4C45BX=0300CX=032BDX=0300SP=0000BP=0000SI=0002DI=0000
DS=17DDES=17CDSS=17DDCS=180EIP=0019NVUPEIPLNZNAPONC
180E:
0019CD21INT21
段中指;
有以上可知经过调试后AX=5645H
实验三算术运算指令
一.实验目的
1.学习算术运算指令的用法。
2.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
二.实验内容
编写三个完整的汇编语言源程序,完成以下计算。
其中X、Y、Z、R、W均为存放16位带符号数单元的地址。
(1)Z←W+(Z-X)
(2)Z←W-(X+6)-(R+9)
(3)Z←(W*X)/(Y+6),R←余数
三.实验操作步骤:
(1)Z←W+(Z-X)
1)实验的源程序如下:
DATASEGMENT
XDW2567H
WDW5841H
ZDW36C2H
DATAENDS
PROGNAMSEGMENT
ASSUMECS:
PROGNAM,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,0
MOVAX,X
SUB[Z],AX;(Z-X)
MOVAX,[W]
ADC[Z],AX;W+(Z-X)
MOVAH,4CH
INT21H
PROGNAMENDS
ENDSTART
2)对程序进行反汇编:
-u
0B9B:
0000B89A0BMOVAX,0B9A
0B9B:
00038ED8MOVDS,AX
0B9B:
0005BE0000MOVSI,0000
0B9B:
0008A10000MOVAX,[0000]
0B9B:
000B29060400SUB[0004],AX
0B9B:
000FA10200MOVAX,[0002]
0B9B:
001211060400ADC[0004],AX
0B9B:
0016B44CMOVAH,4C
0B9B:
0018CD21INT21
0B9B:
001A46INCSI
0B9B:
001BFE8946F6DECBYTEPTR[BX+DI+F646]
0B9B:
001FEB06JMP0027
反汇编后,以上结果可以看出与源程序相符合
查询:
-d0b9a:
0000,000f
0B9A:
000067254158C2360000-0000000000000000g%AX.6..........
执行到断点前
-gf
AX=2567BX=0000CX=002ADX=0000SP=0000BP=0000SI=0000DI=0000
DS=0B9AES=0B8ASS=0B9ACS=0B9BIP=000FNVUPEIPLNZACPONC
0B9B:
000FA10200MOVAX,[0002]DS:
0002=5841
查询执行后的结果:
-d0b9a:
0000,000f
0B9A:
0000672541585B110000-0000000000000000g%AX[...........
36c2H-2567H=115BH满足题意得到Z-X的值
-t2
AX=5841BX=0000CX=002ADX=0000SP=0000BP=0000SI=0000DI=0000
DS=0B9AES=0B8ASS=0B9ACS=0B9BIP=0012NVUPEIPLNZACPONC
0B9B:
001211060400ADC[0004],AXDS:
0004=115B
AX=5841BX=0000CX=002ADX=0000SP=0000BP=0000SI=0000DI=0000
DS=0B9AES=0B8ASS=0B9ACS=0B9BIP=0016NVUPEIPLNZNAPENC
0B9B:
0016B44CMOVAH,4C
-d0b9a:
0000,000f
0B9A:
0000672541589C690000-0000000000000000g%AX.i..........
115BH+5841H=699CH得到W+(Z-X)的值
(2)Z←W-(X+6)-(R+9)
DATASEGMENT
XDW2674H
WDW7046H
RDW310CH
ZDW?
DATAENDS
PROGNAMSEGMENT
ASSUMECS:
PROGNAM,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,0
ADC[X],0006H
ADC[R],0009H
MOVAX,[X]
SUB[W],AX
MOVAX,[R]
SUB[W],AX
MOVAX,[W]
MOV[Z],AX
MOVAH,4CH
INT21H
PROGNAMENDS
ENDSTART
对程序进行反汇编:
-u
0B9B:
0000B89A0BMOVAX,0B9A
0B9B:
00038ED8MOVDS,AX
0B9B:
0005BE0000MOVSI,0000
0B9B:
00088316000006ADCWORDPTR[0000],+06
0B9B:
000D8316040009ADCWORDPTR[0004],+09
0B9B:
0012A10000MOVAX,[0000]
0B9B:
001529060200SUB[0002],AX
0B9B:
0019A10400MOVAX,[0004]
0B9B:
001C29060200SUB[0002],AX
-u
0B9B:
0020A10200MOVAX,[0002]
0B9B:
0023A30600MOV[0006],AX
0B9B:
0026B44CMOVAH,4C
0B9B:
0028CD21INT21
0B9B:
002AFF76F6PUSH[BP-0A]
0B9B:
002DB8D205MOVAX,05D2
0B9B:
003050PUSHAX
0B9B:
0031FF362421PUSH[2124]
0B9B:
0035E81864CALL6450
0B9B:
003883C408ADDSP,+08
0B9B:
003BC45E06LESBX,[BP+06]
0B9B:
003E26ES:
0B9B:
003F837F0600CMPWORDPTR[BX+06],+00
-d0b9a:
0000,000F
0B9A:
00007A26465015310000-0000000000000000z&FP.1..........
-g12
AX=0B9ABX=0000CX=003ADX=0000SP=0000BP=0000SI=0000DI=0000
DS=0B9AES=0B8ASS=0B9ACS=0B9BIP=0012NVUPEIPLNZACPONC
0B9B:
0012A10000MOVAX,[0000]DS:
0000=267A
-d0b9a:
0000,000f
0B9A:
00007A26465015310000-0000000000000000z&FP.1..........
2674H+6=267AH;310cH+9=3115H;分别表示X+6,R+9的值;
-g26
AX=F8B7BX=0000CX=003ADX=0000SP=0000BP=0000SI=0000DI=0000
DS=0B9AES=0B8ASS=0B9ACS=0B9BIP=0026NVUPEINGNZNAPECY
0B9B:
0026B44CMOVAH,4C
-d0b9a:
0000
0B9A:
00007A26B7181531B718-0000000000000000z&...1..........
0B9A:
0010B89A0B8ED8BE0000-8316000006831604................
0B9A:
00200009A10000290602-00A1040029060200.....)......)...
0B9A:
0030A10200A30600B44C-CD21FF76F6B8D205.......L.!
.v....
0B9A:
004050FF362421E81864-83C408C45E062683P.6$!
..d....^.&.
0B9A:
00507F06007409A1A407-398672FF760AFF36...t....9.r.v..6
0B9A:
00602421B8DD05EB3090-803E60080074218B$!
....0..>`..t!
.
0B9A:
00709E72FF8B36D22580-3800740AFF362421.r..6.%.8.t..6$!
7046H-267AH-3115H=187BH;实现了:
W-(X+6)-(R+9)
(3)Z←(W*X)/(Y+6),R←余数
1.源程序如下:
DATASEGMENT
XDW5201H
WDW1357H
YDW3671H
RDW?
ZDW?
DATAENDS
PROGNAMSEGMENT
ASSUMECS:
PROGNAM,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,X
IMUL[W]
ADD[Y],0006H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 实验 报告 最新