微型计算机原理与接口技术实验课讲义.docx
- 文档编号:29032902
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:73
- 大小:889.88KB
微型计算机原理与接口技术实验课讲义.docx
《微型计算机原理与接口技术实验课讲义.docx》由会员分享,可在线阅读,更多相关《微型计算机原理与接口技术实验课讲义.docx(73页珍藏版)》请在冰豆网上搜索。
微型计算机原理与接口技术实验课讲义
实验一汇编语言编辑环境与调试命令的认识
一、实验目的
1、熟悉EDIT编写汇编程序的环境;
2、学习debug调试命令。
二、实验仪器
TDN86/51教学实验系统,计算机
三、实验内容与步骤
(1)、用记事本或EDIT进行汇编程序编辑
可编辑汇编程序的环境很多,记事本和EDIT是其中常用的两种方法。
进入记事本很简单,这里不再介绍。
进入EDIT的方法:
开始→运行→command→进入DOS界面→edit回车→进入EDIT编辑环境→编辑汇编程序→程序完成后以“文件名.asm”(文件名不能是中文,一定要是字母,而字母不能超过8个,asm是扩展名)存盘。
.asm文件是不能运行的,需要把它变成可执行文件(.exe)。
它的变化过程是:
Masmlink
.asm→→→.obj→→→.exe
练习1:
在EDIT中编写一个程序,实现数据段中的两个32位数X、Y相加,结果存到数据段Z中。
并以dadd.asm文件名保存。
(2)、目标文件(.obj)、可执行文件(.exe)的产生
运行masm程序,产生.obj文件,并且检查程序是否有语法错误。
如果有语法错误,会有提示,在哪一行有什么样的错误(是英文提示)。
根据提示,再进入EDIT中,打开源文件进行修改,直到没有语法错误为止。
运行link程序,产生.exe可执行文件。
通过运行可执行文件,观察该程序是否能实现相应的功能。
如若不能,进入debug进行调试。
(3)、debug调试工具
debug是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
1、debug程序的调用
在DOS的提示符下,可键入命令:
C>debug路径\文件名.exe(回车)
其中,文件名是被调试文件的名字(注意:
该文件一定要是.exe文件)。
如用户键入文件名,则debug将指定的文件装入存储器中,用户可对其进行调试。
如果未键入文件名,则用户可以用debug命令N和L把需要的文件装入存储器后在进行调试。
在debug程序调入后,将出现提示符-,此时就可用debug命令来调试程序。
2、debug的主要命令
1显示存储单元的命令D,格式为:
-D地址从指定地址起显示80个字节的内容;
-D范围显示所指定范围内的内容,指定范围为起始地址和终止地址;
-D显示从上一个D命令的最后一个单元后面的80个字节的内容,或者在D未使用过的情况下,显示DS:
0100为起始的内容。
例如,按指定范围显示存储单元内容的方法为:
-d100120
其中100120给出显示存储单元的范围。
这里没有指定段地址,D命令自动显示DS段的内容。
2修改存储单元内容的命令
输入命令E,有两种格式如下:
-E地址[内容表]用指定的内容表去修改指定地址开始的存储器中内容
例如
-EDS:
120F3A5’XYZ’96
表示用F3、A5、’X’、’Y’、’Z’、96共6个字节代替了DS:
120至DS:
125中的内容
-E地址逐个单元修改内容
例如
-ECS:
100屏幕显示为:
18E4:
010089.-
用户可以键入’78’,修改次内容,再键入空格键显示下一个内容,不修改时可用空格键跳过,逐个修改存储器内容,直到回车键结束。
3填入命令格式F
-F范围(内容表)将内容表中内容填入所指定的范围。
例如
-F18E4:
0200L1000
将0200H单元开始的16个字节全部填入0。
若内容表中字节数超过指定范围,则忽略超过项,若内容表中字节数小于指定范围,则反复填入,直到填满所有单元为止。
4检查和修改寄存器命令R
格式有三种:
-R显示CPU内所有寄存器内容和标志位状态
-R寄存器名显示和修改某一个寄存器内容
例如
-RAX屏幕显示:
AX1200
:
;AX当前内容为1200,若不修改则按回车键,否则键入要修改的内容。
如:
-RBX
BX0369
:
059F
则把BX寄存器的内容修改为059F。
RF显示和修改标志位内容
例如-RF屏幕显示:
OVDNEINGZRACPECY—
此时,如不修改其内容可按Enter键,否则,可键入欲修改的内容,如:
OVDNEINGZRACPECY—PONZDINV
即可,可见键入的顺序可以是任意的。
5运行命令G
格式为:
-G[=地址1][地址2[地址3…]]
其中,地址1指定了运行的起始地址,如不指定则从当前的CS:
IP开始运行。
后面的地址为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。
6跟踪命令T
格式有两种:
-T=地址单条指令跟踪,执行指定地址的一条指令,并显示CPU所有寄存器内容,标志位的状态,及下条指令的地址和内容。
若命令中没有指定地址,则从当前CS:
IP开始执行。
-T=地址N,N为多条指令跟踪,从指定地址开始执行指令,共执行指定的N条后停止,每执行一条就显示CPU中所有寄存器内容,标志位的状态及下条指令的地址和内容。
⑦汇编命令A
格式为:
-A地址
该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中,必须注意:
debug把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明。
⑧反汇编命令U
有两种格式:
-U地址从指定地址开始,反汇编32个字节,若没有指定地址,则接着上一个U命令继续向下反汇编,若没有用过U命令,则从CS:
0100开始反汇编。
-U范围对指定范围的存储单元反汇编,可指定起始地址,结束地址,也可指定起始地址及长度。
例如:
–U1CE2:
0110011A或–U1CE2:
0110L0B效果是一样的。
⑨命名命令N
命名命令N常与装入命令L一起使用
如:
–N路径\文件名.exe
–L
–
可把文件名.exe装入存储器。
⑩退出debug命令Q
格式为:
–Q
它退出debug,返回DOS。
例:
在debug中,汇编一段程序,实现两个32位数的加法,12345678H+3456789AH=?
用E命令在DS:
0120存储单元开始存放78H、56H、34H、12H、9AH、78H、56H、34H,
用汇编命令A编写一段程序如下:
Movax,[0120h]
Movdx,[0122h]
Addax,[0124h]
Adcdx,[0126h]
Mov[0128h],ax
Mov[012ah],dx
然后用G命令运行该程序段
G=起始地址终止地址
最后用D命令查看结果
DDS:
0120012C
练习2:
在debug中,汇编一段程序,实现两个32位数的减法,3456789Ah-12345678h=?
实验二汇编语言程序的编辑与调试实验
一、实验目的
1、学会用EDIT编写汇编语言程序;
2、学会使用MASM产生目标文件和可执行文件;
3、掌握在DEBUG下汇编程序的调试。
二、实验仪器
TDN86/51教学实验系统,计算机
三、实验内容与步骤
1、内容
在BCD1单元中,压缩存放着两个BCD码。
现编写一程序,将压缩的BCD码转变成两个非压缩的BCD码,分别存放到result和result+1单元中。
2、步骤
①在EDIT环境下编写能实现上述功能的汇编源程序,并以文件名为BCD1.ASM保存。
②执行MASM.EXE文件,检查程序中是否有语法错误;若有错,则返回到EDIT中,打开源程序进行修改,直到无语法错误为止,同时产生相应的目标文件。
③执行LINK.EXE文件,产生相应的可执行文件;
④打开DEBUG调试环境,装入相应的可执行文件,并用反汇编命令检查可执行文件是否已装入;
⑤单步运行每条指令,观察运行结果;
⑥整个程序运行完成后,到指定的存储单元中观察运行结果是否符合要求。
四、思考题
1、执行MASM.EXE文件的主要作用是什么?
2、在实验中,你用了哪些DEBUG命令,目的是什么?
实验三综合程序的设计、编制及调试
一、实验目的
1、掌握分支、循环、子程序调用等基本的程序结构;
2、学习综合程序的设计、编制及调试。
二、实验仪器
TDN86/51教学实验系统,计算机
三、实验内容与步骤
1、内容
在数据段的buffer字单元中存放着一个16位二进制数,编写一个程序把buffer中的内容用十六进制显示出来。
2、步骤
①程序流程图
②按流程图编写程序
③上机调试,实现题目要求的功能
四、思考题
编程显示F000:
0000存储单元的内容,显示形式为:
“F000:
000090”。
画出流程图,写出源代码,上机调试通过,实现相应功能。
附件1:
实验源程序
datasegment
string1db0dh,0ah,'pleaseinput16-bitbinarynumber',0dh,0ah,'$'
string2db0dh,0ah,'yourinputhasmistake.'
string3db0dh,0ah,'doyouwanttoinputagain(Y/N)?
',0dh,0ah,'$'
string4db'binarytohexadecimal:
',0dh,0ah,'$'
dataends
stacksegmentstack
dw256dup(?
)
toplabelword
stackends
codesegment
assumecs:
code,ds:
data,ss:
stack
start:
movax,data
movds,ax
movax,stack
movss,ax
movsp,offsettop
next:
movdx,offsetstring1
movah,09h
int21h
movcx,16
xorbx,bx
rota:
shlbx,1
movah,01h
int21h
andal,0fh
jzrota1
cmpal,1
jnzagain
orbx,01h
rota1:
looprota
movdl,'B'
movah,02h
int21h
movdl,0dh
int21h
movdl,0ah
int21h
jmpl4
again:
movdx,offsetstring2
movah,09h
int21h
l5:
movah,08h
int21h
andal,0dfh
cmpal,'Y'
jznext
jmpexit
l4:
callhtodis
movdx,offsetstring3
movah,09h
int21h
jmpl5
exit:
movah,4ch
int21h
htodisproc
movdx,offsetstring4
movah,09h
int21h
movch,4
l2:
movcl,4
rolbx,cl
moval,bl
andal,0fh
addal,30h
cmpal,39h
jbel1
addal,07h
l1:
calldisplay
decch
jnzl2
movdl,'H'
movah,2
int21h
ret
htodisendp
displayproc
movdl,al
movah,2
int21h
ret
displayendp
codeends
endstart
附件2:
思考题源程序
datasegment
stringdb0dh,0ah,'pleaseinputaddress',0dh,0ah,'$'
string1db0dh,0ah,0dh,0ah,'doyouwanttoinputagain(y/n)?
',0dh,0ah,'$'
dataends
stacksegmentstack
dw256dup(?
)
toplabelword
stackends
codesegment
assumecs:
code,ds:
data,ss:
stack
start:
movax,data
movds,ax
movax,stack
movss,ax
movsp,offsettop
next:
movdx,offsetstring
movah,9
int21h
callreci
moves,bx
movdl,':
'
movah,2
int21h
callreci
movsi,bx
movdl,''
movah,2
int21h
movdi,8
l5:
movbl,es:
[si]
callhtodisb
incsi
decdi
jnzl5
movdl,'-'
movah,2
int21h
movdl,''
int21h
movdi,8
l6:
movbl,es:
[si]
callhtodisb
incsi
decdi
jnzl6
movdx,offsetstring1
movah,9
int21h
movah,8
int21h
andal,0dfh
cmpal,'Y'
jnzexit
jmpnext
exit:
movah,4ch
int21h
htodisbproc
movch,2
movcl,4
l3:
rolbl,cl
moval,bl
andal,0fh
addal,30h
cmpal,39h
jbel4
addal,07h
l4:
movdl,al
movah,2
int21h
decch
jnzl3
movdl,''
movah,2
int21h
ret
htodisbendp
reciproc
xorbx,bx
movch,4
movcl,4
l8:
shlbx,cl
movah,1
int21h
subal,30h
cmpal,9h
jbel7
andal,0dfh
subal,7
l7:
orbl,al
decch
jnzl8
ret
reciendp
codeends
endstart
实验四DOS系统功能调用实验
一、实验目的
1、学习DOS系统功能调用的使用方法;
2、重点掌握键盘输入和输出显示的DOS系统功能调用的方法。
二、实验仪器
TDN86/51教学实验系统,计算机
三、实验内容和步骤
无论是用户程序还是DOS系统本身,都离不开输入/输出操作,为了方便用户,PCDOS系统将输入/输出管理程序编成一系列子程序,不仅系统可以使用,用户也可以像调子程序一样方便地使用它们。
调用系统提供的子程序,通常称为系统功能调用。
DOS系统功能调用的方式是通过执行一条软中断指令INT21H实现的。
当寄存器AH中设置不同的值时,该指令将完成不同的功能,我们称AH中设置的内容为功能号。
通过下面的编程练习,学会DOS系统功能1、2、7、8、9、A的调用方法。
1、内容
从键盘上输入一组字符串,将其送入输入缓冲区,把字符串中小写的字符转换成大写后,再显示这组字符串。
流程图如下:
2、步骤
①按流程图编写程序
②上机调试,实现题目要求的功能
思考题:
把上题中输入字符串中的最小字符和最大字符分别显示出来。
附件:
datasegment
string1db0dh,0ah,'pleaseinputstring',0ah,0dh,'$'
string2db0dh,0ah,'doyouwanttoinputstringagain(Y/N)?
',0ah,0dh,'$'
bufferdb40h,?
buffer1db40hdup(?
)
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
again:
movdx,offsetstring1
movah,9
int21h
movdx,offsetbuffer
movah,0ah
int21h
moval,buffer+1
cbw
movbx,offsetbuffer1
addbx,ax
movcx,ax
movbyteptr[bx],'$'
movdx,offsetbuffer1
movah,9
int21h
movbx,offsetbuffer1
l1:
moval,[bx]
cmpal,'a'
jbl2
cmpal,'z'
jal2
subal,20h
movbyteptr[bx],al
l2:
incbx
loopl1
movdl,0ah
movah,2
int21h
movdl,0dh
movah,2
int21h
movdx,offsetbuffer1
movah,9
int21h
movdx,offsetstring2
movah,9
int21h
movah,1
int21h
andal,0dfh
cmpal,'Y'
jzagain
movah,4ch
int21h
codeends
endstart
实验五综合编程练习
一、实验目的
综合运用分支、循环、子程序和DOS系统功能调用编写程序;
二、实验仪器
TDN86/51教学实验系统,计算机
三、实验内容和步骤
1、内容
从键盘输入一个夹带有若干个空格的字符串,显示第一个空格的位置(thefirstblankpositionis:
)和字符串长度(thelengthofthestringis:
),开始的空格不计算在字符串长度内。
若输入的字符串中没有空格,显示“thereisn’tanyblankinthestring”提示,同时显示该字符串的长度。
完成后提示是否还要继续(doyouwanttoinputstringagain(Y/N)?
),按Y继续,其他退出。
编写一程序实现上述功能。
2、步骤
自己画出流程图,写出符合要求的程序,上机调试通过。
四、思考题
如若要显示字符串中空格的个数,上述程序如何修改。
假定有一最大长度为80个字符的字符串已定义为字节变量STRING,试编写一程序段,找出第一个空格的位置(00H至4FH表示),并显示出来。
统计该串不包括前导空的实际长度(不包括回车符),统计结果显示出来。
datasegment
string1db0dh,0ah,'pleaseinputstring',0dh,0ah,'$'
string2db80
db?
string3db80dup(?
)
string4db0dh,0ah,'thestringhasnotblank',0dh,0ah,'$'
string5db0dh,0ah,'doyouwanttoinputstringagain(Y/N)?
',0dh,0ah,'$'
string6db0dh,0ah,'thefirstblankpositionis:
$'
string7db0dh,0ah,'thelengthofthestringis:
$'
dataends
stacksegmentstack
dw256dup(?
)
toplabelword
stackends
codesegment
assumecs:
code,ds:
data,ss:
stack
start:
movax,data
movds,ax
movax,stack
movss,ax
movsp,offsettop
again:
movdx,offsetstring1
movah,9
int21h
movdx,offsetstring2
movah,0ah
int21h
moval,string2+1
cbw
movcx,ax
moval,''
xorbx,bx
next:
cmpal,string3[bx]
jzl1
incbx
loopnext
movdx,offsetstring4
movah,9
int21h
jmpl4
;*************************************
l1:
movdx,offsetstring6
movah,9
int21h
calldisplay
;************************************
l4:
movdx,offsetstring7
movah,9
int21h
calllength1
movdx,offsetstring5
movah,9
int21h
movah,1
int21h
andal,0dfh
cmpal,'Y'
jzagain
exit:
movah,4ch
int21h
;***********************************
displayproc
pushcx
movch,2
l3:
movcl,4
rolbl,cl
movdl,bl
anddl,0fh
cmpdl,9
jal2
adddl,30h
jmpdis1
l2:
adddl,37h
dis1:
movah,2
int21h
decch
jnzl3
movdl,'H'
movah,2
int21h
popcx
ret
displayendp
length1proc
pushbx
pushsi
pushax
movbl,string2+1
movsi,offsetstring3
moval,''
l7:
cmp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微型计算机 原理 接口 技术 实验 讲义