微型计算机原理与接口技术实验课讲义Word格式文档下载.docx
《微型计算机原理与接口技术实验课讲义Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微型计算机原理与接口技术实验课讲义Word格式文档下载.docx(63页珍藏版)》请在冰豆网上搜索。
-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下汇编程序的调试。
二、实验仪器
三、实验内容与步骤
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、学习综合程序的设计、编制及调试。
在数据段的buffer字单元中存放着一个16位二进制数,编写一个程序把buffer中的内容用十六进制显示出来。
①程序流程图
②按流程图编写程序
③上机调试,实现题目要求的功能
四、思考题
编程显示F000:
0000存储单元的内容,显示形式为:
“F000:
000090”。
画出流程图,写出源代码,上机调试通过,实现相应功能。
附件1:
实验源程序
datasegment
string1db0dh,0ah,'
pleaseinput16-bitbinarynumber'
0dh,0ah,'
$'
string2db0dh,0ah,'
yourinputhasmistake.'
string3db0dh,0ah,'
doyouwanttoinputagain(Y/N)?
'
string4db'
binarytohexadecimal:
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
andal,0fh
jzrota1
cmpal,1
jnzagain
orbx,01h
rota1:
looprota
movdl,'
B'
movah,02h
movdl,0dh
movdl,0ah
jmpl4
again:
movdx,offsetstring2
l5:
movah,08h
andal,0dfh
cmpal,'
Y'
jznext
jmpexit
l4:
callhtodis
movdx,offsetstring3
jmpl5
exit:
movah,4ch
htodisproc
movdx,offsetstring4
movch,4
l2:
movcl,4
rolbx,cl
moval,bl
addal,30h
cmpal,39h
jbel1
addal,07h
l1:
calldisplay
decch
jnzl2
H'
movah,2
ret
htodisendp
displayproc
movdl,al
displayendp
codeends
endstart
附件2:
思考题源程序
stringdb0dh,0ah,'
pleaseinputaddress'
string1db0dh,0ah,0dh,0ah,'
doyouwanttoinputagain(y/n)?
'
movdx,offsetstring
movah,9
callreci
moves,bx
:
movsi,bx
movdi,8
movbl,es:
[si]
callhtodisb
incsi
decdi
jnzl5
-'
l6:
movbl,es:
jnzl6
movah,8
jnzexit
jmpnext
htodisbproc
movch,2
l3:
rolbl,cl
jbel4
movdl,al
jnzl3
htodisbendp
reciproc
l8:
shlbx,cl
movah,1
subal,30h
cmpal,9h
jbel7
subal,7
l7:
orbl,al
jnzl8
reciendp
codeends
实验四DOS系统功能调用实验
1、学习DOS系统功能调用的使用方法;
2、重点掌握键盘输入和输出显示的DOS系统功能调用的方法。
三、实验内容和步骤
无论是用户程序还是DOS系统本身,都离不开输入/输出操作,为了方便用户,PCDOS系统将输入/输出管理程序编成一系列子程序,不仅系统可以使用,用户也可以像调子程序一样方便地使用它们。
调用系统提供的子程序,通常称为系统功能调用。
DOS系统功能调用的方式是通过执行一条软中断指令INT21H实现的。
当寄存器AH中设置不同的值时,该指令将完成不同的功能,我们称AH中设置的内容为功能号。
通过下面的编程练习,学会DOS系统功能1、2、7、8、9、A的调用方法。
从键盘上输入一组字符串,将其送入输入缓冲区,把字符串中小写的字符转换成大写后,再显示这组字符串。
流程图如下:
2、步骤
①按流程图编写程序
②上机调试,实现题目要求的功能
思考题:
把上题中输入字符串中的最小字符和最大字符分别显示出来。
附件:
pleaseinputstring'
0ah,0dh,'
doyouwanttoinputstringagain(Y/N)?
bufferdb40h,?
buffer1db40hdup(?
data
start:
movax,data
movdx,offsetbuffer
movah,0ah
moval,buffer+1
cbw
movbx,offsetbuffer1
addbx,ax
movcx,ax
movbyteptr[bx],'
movdx,offsetbuffer1
moval,[bx]
a'
jbl2
z'
jal2
subal,20h
movbyteptr[bx],al
incbx
loopl1
movdl,0dh
movdx,offsetstring2
jzagain
实验五综合编程练习
综合运用分支、循环、子程序和DOS系统功能调用编写程序;
1、内容
从键盘输入一个夹带有若干个空格的字符串,显示第一个空格的位置(thefirstblankpositionis:
)和字符串长度(thelengthofthestringis:
),开始的空格不计算在字符串长度内。
若输入的字符串中没有空格,显示“thereisn’tanyblankinthestring”提示,同时显示该字符串的长度。
完成后提示是否还要继续(doyouwanttoinputstringagain(Y/N)?
),按Y继续,其他退出。
编写一程序实现上述功能。
自己画出流程图,写出符合要求的程序,上机调试通过。
如若要显示字符串中空格的个数,上述程序如何修改。
假定有一最大长度为80个字符的字符串已定义为字节变量STRING,试编写一程序段,找出第一个空格的位置(00H至4FH表示),并显示出来。
统计该串不包括前导空的实际长度(不包括回车符),统计结果显示出来。
string2db80
db?
string3db80dup(?
string4db0dh,0ah,'
thestringhasnotblank'
string5db0dh,0ah,'
string6db0dh,0ah,'
thefirstblankpositionis:
string7db0dh,0ah,'
thelengthofthestringis:
dw256dup(?
moval,string2+1
moval,'
cmpal,string3[bx]
jzl1
loopnext
;
*************************************
movdx,offsetstring6
************************************
movdx,offsetstring7
calllength1
movdx,offsetstring5
movah,4ch
***********************************
pushcx
movdl,bl
anddl,0fh
cmpdl,9
adddl,30h
jmpdis1
adddl,37h
dis1:
movah,2
popcx
length1proc
pushbx
pushsi
pushax
movbl,string2+1
movsi,offsetstring3