微机实验.docx
- 文档编号:7485994
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:13
- 大小:24.61KB
微机实验.docx
《微机实验.docx》由会员分享,可在线阅读,更多相关《微机实验.docx(13页珍藏版)》请在冰点文库上搜索。
微机实验
实验一DEBUG命令及其操作
一、实验内容1
(一)小结常用的debug命令:
1)汇编与反汇编命令
1.汇编命令A
格式:
A【地址】
功能:
从键盘输入汇编程序,并逐条地把汇编指令翻译成机器代码指令存入对应内存单元。
2.反汇编命令U
格式:
U【地址】/【地址范围】
功能:
将指定地址范围内的机器代码翻译成汇编源程序指令显示出来,并同时显示地址及代码。
2)显示与修改内存单元内容的命令
1.显示内存单元内容命令D
格式1:
D【地址】
格式2:
D地址范围
2.修改内存单元内容命令E
格式1:
E地址内容表
格式2:
E地址
说明:
在修改数据时可用以下键进行不同操作:
1)键入空格键。
修改后一个字节单元的内容。
2)输入减号"-"。
另起一行,修改前面一个字节单元的内容。
3)输入回车键,结束内存单元的修改。
3.填充内存命令F格式:
F地址范围内容表
功能:
将<内容表>的值逐个填入指定地址范围,内容表中的内容用完后再重复使用。
3)显示与修改寄存器内容的R命令
格式1:
R
功能:
显示当前所有寄存器内容,状态标志及将要执行的下一条指令的地址、代码和汇编指令形式。
格式2:
R寄存器名
功能:
显示并修改指定寄存器的内容
4)运行和跟踪命令
1.运行程序命令G
格式:
G【=起始地址】【断点地址】
功能:
从起始地址开始执行程序,直到程序结束或遇到断点地址为止。
如果程序执行到结束,则显示"Programterminatednormally"(程序正常结束)。
如果遇到断点,则程序停止执行,并显示当时各寄存器的内容和下一条要执行的指令。
2.跟踪运行命令T
格式:
T【=起始地址】【指令条数】
功能:
逐条跟踪程序的运行,同时显示出各寄存器的内容、状态标志和下一条要执行的指令,当执行够指定的指令数后就暂停程序的运行。
不指定指令条数时,认为只执行一条指令。
3.继续命令P
格式:
P【=起始地址】【指令条数】
功能:
与T命令一样完成跟踪程序的运行,但遇到子程序、中断程序、循环时并不跟踪下去,而是把它们当作一条指令来执行。
5)磁盘读写命令
1.文件命名命令N
格式:
N文件名
功能:
指定要装入内存或写到磁盘的文件的名字(包括盘符和路径)。
2.装入命令L
格式:
L【地址】【驱动器号扇区号扇区数】
功能:
把指定文件或磁盘扇区的内容装入到内存指定地址
驱动器号用0表示A盘,1表示B盘,2表示C盘。
3.写磁盘命令W
格式:
W【地址】【驱动器号扇区号扇区数】
功能:
将指定内存地址的一片单元内容写到磁盘中。
将内存内容写入文件时,必须先用N命令命名一个文件,并置BX和CX为文件长度。
4.退出DEBUG命令Q(Quit)
格式:
-Q
功能:
退出DEBUG,返回DOS。
本命令并无存盘功能,如需存盘应先使用W命令。
(二)常用debug命令的使用体会:
通过debug,程序设计者可以在设计程序时实时修改监控程序,提高效率。
debug程序简单,方便易学,易于上手,程序设计者可通过它很方便的对计算机内部进行观察,并可以观察和修改寄存器和储存单元的内容,很清楚的查看到目标程序的执行情况。
二、实验内容2
(一)设AX=3000H,BX=5000H,要求利用堆栈将AX和BX的内容进行交换。
用DEBUG进行汇编与调试的程序段如下:
-A100
13C9:
0100MOVAX,3000
13C9:
0103MOVBX,5000
13C9:
0106PUSHAX
13C9:
0107PUSHBX
13C9:
0108POPAX
13C9:
0109POPBX
(二)单步执行,并记录寄存器AX,BX及堆栈指针SP的变化:
AX
BX
SP
3000H
0000H
0FFEEH
3000H
5000H
0FFEEH
3000H
5000H
0FFECH
3000H
5000H
0FFEAH
5000H
5000H
0FFECH
5000H
3000H
0FFEEH
三、实验内容3
(一)写出源操作数的寻址方式;
MOVBX,0300;立即寻址
MOVSI,0002;立即寻址
MOVAX,BX;寄存器寻址
MOVAX,0304H;立即寻址
MOVAX,[0304H];直接寻址
MOVAX,[BX];寄存器间接寻址
MOVAX,0001[BX];变址寻址
MOVAX,[BX][SI];基址加变址寻址
MOVAX,0001[BX][SI];基址加变址寻址
(二)单步执行,并记录相关寄存器及存储单元的值:
AX
BX
SI
0000H
0300H
0000H
0000H
0300H
0002H
0300H
0300H
0002H
0304H
0300H
0002H
0055H
0300H
0002H
2211H
0300H
0002H
3322H
0300H
0002H
4433H
0300H
0002H
5544H
0300H
0002H
四、实验内容4
设AX=0002H,编写程序将AX的内容乘10,要求用移位的方法完成。
注意:
左移指令用SHL,而不能使用SAL。
(一)实现上述功能的程序段如下:
-A100
13C9:
0100MOVAX,0002
13C9:
0103SHLAX,1
13C9:
0105MOVBX,AX
13C9:
0107MOVCL,2
13C9:
0109SHLAX,CL
13C9:
010BADDAX,BX
13C9:
010D
-
(二)单步执行程序,记录每条指令的机器码及相关寄存器的内容:
-T
AX=0002BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13C9ES=13C9SS=13C9CS=13C9IP=0103NVUPEIPLNZNAPONC
13C9:
0103D1E0SHLAX,1
-T
AX=0004BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13C9ES=13C9SS=13C9CS=13C9IP=0105NVUPEIPLNZNAPONC
13C9:
010589C3MOVBX,AX
-T
AX=0004BX=0004CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13C9ES=13C9SS=13C9CS=13C9IP=0107NVUPEIPLNZNAPONC
13C9:
0107B102MOVCL,02
-T
AX=0004BX=0004CX=0002DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13C9ES=13C9SS=13C9CS=13C9IP=0109NVUPEIPLNZNAPONC
13C9:
0109D3E0SHLAX,CL
-T
AX=0010BX=0004CX=0002DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13C9ES=13C9SS=13C9CS=13C9IP=010BNVUPEIPLNZNAPONC
13C9:
010B01D8ADDAX,BX
-T
AX=0014BX=0004CX=0002DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13C9ES=13C9SS=13C9CS=13C9IP=010DNVUPEIPLNZNAPONC
13C9:
010D0000ADD[BX+SI],ALDS:
0004=00
实验二简单程序的编写及汇编连接
一、实验内容1
(一)小结汇编语言源程序的编译及连接过程:
1)用汇编语言编写的源程序,运行必须经过以下几个步骤:
用编辑程序建立一个扩展名为.ASM的汇编语言源程序文件。
调汇编程序(MASM),对源程序汇编,生成机器码目标文件,扩展名为.OBJ。
连接(LINK)目标文件,生成可执行文件,扩展名为.EXE。
运行可执行文件。
如果程序运行有错,可调用DEBUG程序对.EXE文件进行调试。
2)编辑汇编语言源程序
可用各种编辑软件来建立汇编语言源程序,例如记事本。
先保存为.TXT文件,然后改为.ASM文件,方法是在windows界面:
工具——文件夹选项——查看——将“隐藏已知文件的扩展名”选项去掉。
然后将扩展名.TXT直接改为.ASM,汇编程序文件名称由用户自定。
3)编译汇编语言源程序
用MASM程序汇编源程序,生成浮动目标程序(即扩展名为.OBJ的文件),这里产生的是浮动的目标模块,是不可执行程序。
“开始”菜单->运行->键入“cmd”->确定,打开DOS命令行窗口。
汇编前,在DOS状态下用下列命令可以打开源程序,例如打开fly.asm的方法是:
>typefly.asm<CR>
则屏幕上显示出fly.asm的源程序。
汇编fly.asm文件过程的屏幕操作与显示如下:
>masmfly.asm
屏幕显示以下各行,提示用户所应键入的信息:
OBJECTFILENAME[Z1.OBJ]:
SOURCELISTING[NUL.LST]:
CROSSREFERENCE[NUL.CRF]:
产生目标文件(.OBJ)是汇编的主要目的,通常可以直接回车,表示采用默认文件名。
(.LST)文件为列表文件,提供全部汇编后的信息。
若不需要这些信息,可直接回车。
(.CRF)文件为交义引用文件,要建立交叉引用文件,则键入文件名。
若不需要,可直接回车。
到此为止,汇编过程已完成。
MASM对源程序进行汇编时,若发现源程序中有语法错误则列出有错误的语句,错误的代码和错误的类型,最后列出错误的总数。
此时就可以分析错误,调用编辑程序修改错误,直到汇编无错误。
4)连接装配汇编程序
LINK.EXE文件用来将(.OBJ)文件连接成可执行文件,扩展名为(.EXE)。
连接过程如下:
在DOS下,键入
>LINKfly
先显示版本号,然后依此提问以下几个问题:
RUNFILE[Z1.EXE]:
LISTFILE[NUL.MAP]:
LIBRARIES[.LIB]:
第一个提示询问要产的可执行文件(.EXE)的文件名,一般按回车表示默认括号内规定的文件名。
第二个提示询问是否建立内存分配图文件(.MAP),直接回车表示不要建立。
最后询问是否用库文件(.LIB),若不用库文件,直接回车。
然后连接程序开始进行连接,若连接过程有错,则显示错误信息。
有错误就要修改源文件,重新汇编、连接直至无错。
5)汇编语言程序的运行
汇编语言源程序经过汇编、连接以后生成的.EXE文件,可在DOS下直接键入文件名运行。
例如:
>fly
则fly.EXE文件会装入内存并从程序中起始的地址运行。
程序如正确无误,执行完后控制将能正常返回DOS操作系统。
若运行结果在存储单元里,或发现程序运行错误,或想跟踪程序的执行,那么就需要用DEBUG程序。
6)汇编程序的调试
在DOS的提示下,键入命令:
>DEBUGfly.exe
DOS把DEBUG.COM调入内存后把被调试的fly程序也调入内存。
装入内存的地址从偏移0开始,装入后显示DEBUG的提示符“—”。
在提示符“—”下可执行DEBUG的各种命令。
二、画出buffer的存储示意图,如下图所示:
00H
00H
01H
00H
0FBH
0FFH
0AH
00H
00H
01H
80H
0FFH
9CH
0FFH
2DH
00H
06H
00H
03H
00H
0F1H
0FFH
0BDH
0FFH
27H
00H
04H
00H
14H
00H
7CH
0F9H
02H
80H
0FDH
7FH
0F3H
0FDH
2CH
01H
三、max单元的地址:
程序执行后的结果:
max=7FFDH
二、实验内容2
(一)调整延时时间,在屏幕上显示:
0123456789十次,源程序修改:
MOVDX,5改为MOVDX,10
(二)要使在显示的数字之间加空格后在屏幕上显示,修改ASCII码,源程序修改:
MOVDL,0DH改为MOVDL,20H
(三)使程序可以显示英文26个字母1次,源程序修改:
MOVCX,100改为MOVCX,26
ORAL,30H改为ORAL,40H
删除DAA
ANDAL,0FH
三、实验内容3
(一)用汇编语言编写一个加法程序:
1234+5678
要求:
用ASCII码的形式将加数与被加数存放在数据区DATA1和DATA2中,并将相加的结果显示输出。
程序如下:
DATASEGMENT
DATAlDB4DUP(?
)
DATA2DB5DUP(?
)
DATA3DB0DH,0AH,'$'
DATAENDS
STACKSEGMENTPARASTACK'STACK'
DB64DUP(?
)
STACKENDS
CFDMACRO
MOVDX,OFFSETDATA3
MOVAH,09H;显示字符串
INT21H
ENDM;回车换行宏定义
CODESEGMENTPARA'CODE'
ASSUMECS:
CODE,DS:
DATA,SS:
STACK,ES:
DATA
STARTPROCFAR
PUSHDS
MOVAX,00H
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVES,AX;程序初始化
MOVSI,OFFSETDATA1;将DATAl的偏移地址送SI
CALLSAV;调用将键盘键入数据保存过程
CFD;调用回车换行宏定义
MOVSI,OFFSETDATA2;将DATA2的偏移地址送SI
CALLSAV;调用将键盘键入数据保存过程
CFD;调用回车换行宏定义
STD;方向标志DF为“1”,为反向串
MOVSI,OFFSETDATA1+3;将加数最末位地址送SI
MOVDI,OFFSETDATA2+3;将被加数最末位地址送DI
MOVCX,04H;共4位数相加
MOVAH,00H;清AH
LOPl:
LODSDATA1+3;取串:
([SI])→AL,(SI-1)→SI
SAHF;将AH中进位标志送标志寄存器
ADCAL,[DI];带进位加,结果送AL
AAA;ASCII码十进制加法调整
LAHF;将标志寄存器内容暂存在AH中
ORAL,30H;将计算值拼成ASCII码
INCDI;将计算值的ASCII码存入DATA2中
STOSB;存串,AL→[DI],(DI-1)→DI
DECDI;调整被加数地址指针,指向下一位数
LOOPLOP1;取下一位数转到LOP1
INCDI;4位加完,调整结果地址指针
ANDAH,01H;将最高位进位取出送AH
ORAH,30H;拼成ASCII码
MOV[Dl],AH;存到DATA2的最高位
MOVAH,02H;调用DOS的显示功能
MOVCX,05H;共显示5位数
LOP2:
MOVDL,[DI];将显示结果从最高位开始送入DL中
INT2lH;调用21H号中断
INCDI;使结果地址指针指向下一位
LOOPLOP2;显示下一位转LOP2
RET;5位显示完毕
STARTENDP
SAVPROCNEAR;取键盘键入的数据,并存入数据段过程
MOVCX,04;取4位数
LEP:
MOVAH,0lH;调用DOS读取键入数据功能
INT21H;调用21H中断
MOV[Sl],AL;将键入数据存入数据段
INCSI;移动地址指针
LOOPLEP;共键入4位并存入数据段
RET;4位键入完毕
SAVENDP
CODEENDS
ENDSTART
执行结果:
c:
>DATADD2↓
1234
5678
6912
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 实验
![提示](https://static.bingdoc.com/images/bang_tan.gif)