微机原理与接口技术指导书电子科技大学.docx
《微机原理与接口技术指导书电子科技大学.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术指导书电子科技大学.docx(17页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术指导书电子科技大学
汇编语言实验指导书
电子科技大学计算机学院
二○○六年八月
实验一汇编源程序的上机调试操作基础训练……………………………..2
实验二数制、码制和子程序的编程与调试……………………………….6
实验三分支程序与循环程序设计……………………………………….10
实验四串操作指令及其应用程序的设计与调试运行……………………12
附录实验报告……………………………………………………………15
实验一汇编源程序的上机调试操作基础训练
一.实验目的:
1.掌握DEBUG的基本命令及其功能
2.学习数据传送和算术运算指令的用法
3.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
二.实验内容:
(一)DEBUG命令的使用
DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
1、DEBUG程序的启动
在DOS提示符下,可键入命令:
C>DEBUG[d:
][path][文件名][参数1][参数2]
其中文件名是被调试文件的名称,它须是执行文件(EXE),两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。
在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。
用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。
如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。
2、DEBUG的主要命令
(1)汇编命令A,格式为:
-A[地址]
该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。
(2)反汇编命令U,有两种格式:
1)-U[地址]
该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。
2)-U范围
该命令对指定范围的内存单元进行反汇编,例如:
-U04BA:
01000108或–U04BA:
0100L9
此二命令是等效的。
(3)运行命令G,格式为:
-G[=地址1][地址2[地址3。
。
。
]]
其中地址1规定了运行起始地址,后面的若干地址均为断点地址。
(4)追踪命令T,有两种格式:
1)逐条指令追踪:
-T[=地址]
该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。
2)多条指令追踪:
-T[=地址][值]
该命令从指定地址起执行n条命令后停下来,n由[值]确定。
(5)显示内存单元内容的命令D,格式为:
-D[地址]或-D[范围]
(6)修改内存单元内容的命令E,它有两种格式:
1)用给定的内容代替指定范围的单元内容:
-E地址内容表
例如:
-E2000:
0100F3“XYZ”8D
其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元2000:
0100到0104的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。
2)逐个单元相继地修改:
-E地址
例如:
-E100:
18E4:
010089.78
此命令是将原100号单元的内容89改为78。
78是程序员键入的。
(7)检查和修改寄存器内容的命令R,它有三种方式:
1)显示CPU内部所有寄存器内容和标志位状态;格式为:
-R
R命令显示中标志位状态的含义如下表所示:
标志名
置位
复位
溢出Overflow(是/否)
OV
NV
方向Direction(减量/增量)
DN
UP
中断Interrupt(允许/屏蔽)
EI
DI
符号Sign(负/正)
NG
PL
零Zero(是/否)
ZR
NZ
辅助进位AuxiliaryCarry(是/否)
AC
NA
奇偶Parity(偶/奇)
PE
PO
进位Carry(是/否)
CY
NC
2)显示和修改某个指定寄存器内容,格式为:
-R寄存器名
例如打入:
-RAX
系统将响应如下:
AXFIF4
:
表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如:
-RBX
BX0369
:
059F
则BX内容由0369改为059F
3)显示和修改标志位状态,命令格式为:
-RF
系统将给出响应,如
OVDNEINGZRACPECY-
这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。
如
OVDNEINGZRACPECY-PONZDINV
(8)命名命令N,格式为:
-N文件名
此命令将文件名格式化在CS:
5CH的文件控制块内,以便使用L或W命令把文件装入内存进行调试或者存盘。
(9)装入命令L,它有两种功能:
1)把磁盘上指定扇区的内容装入到内存指定地址起始的单元中,格式为:
-L地址驱动器扇区号扇区数
2)装入指定文件,格式为:
-L[地址]
此命令装入已在CS:
5CH中格式化的文件控制块所指定的文件。
在用L命令前,BX和CX中应包含所读文件的字节数。
(10)写命令W,有两种格式:
1)把数据写入磁盘的指定扇区:
-W地址驱动器扇区号扇区数
2)把数据写入指定文件中:
-W[地址]
此命令把指定内存区域中的数据写入由CS:
5CH处的FCB所规定的文件中。
在用W命令前,BX和CX中应包含要写入文件的字节数。
(11)退出DEBUG命令Q,该命令格式为
Q
它退出DEBUG程序,返回DOS,但该命令本身并不把在内存中的文件存盘,如需存盘,应在执行Q命令前先执行写命令W。
(二)程序的调试与运行
编写程序计算以下表达式:
Z=(5X+2Y-7)/2
设X、Y的值放在字节变量VARX、VARY中,结果存放在字节单元VARZ中。
三.实验要求:
实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。
四.调试步骤
1.编辑源程序,建立一个以后缀为.ASM的文件.
2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。
无错时继续第3步。
3.连接目标程序,产生可执行程序。
4.用DEBUG程序调试可执行程序,记录数据段的内容。
VARX
VARY
VARZ
5
4
10
5
20
20
实验二数制、码制和子程序的编程与调试
一.实验目的:
1、熟练掌握编写汇编语言原程序的基本方法和基本框架。
2、熟练使用DEBUG调试程序。
3、掌握十六进制数与ASCII码之间,ASCII码与BCD码之间的转换。
4、掌握用DOS功能调用,实现字符的输入和显示。
5、掌握子程序的编程与调试方法。
二.实验内容:
编程实现:
从键盘输入4位十六进制数(它对应的二进制数是补码表示的带符号数),把它们转换为带符号非组合型BCD码,并在屏幕上显示出来。
三.编程提示:
1、从键盘输入1~4位十六进制数,存放在以HEXBUF+2为首址的4个字节单元中。
其中HEXBUF+1单元中为输入的数据个数。
2、将ASCII码表示的4位十六进制数转换为16位二进制数,并暂时存放在BX中;
3、确定十进制数的符号,并把符号(+或-)存放在BCDBUF单元中;
4、对BX中的二进制数采用前述算法转换为十进制数(非组合型BCD码),转换结果存放在以BCDBUF+1为首址的5个字节单元中;
5、把转换结果的5个非组合型BCD码形成相应的ASCII码
6、显示结果。
参考程序:
TITLECONVERTHEXADECIMALTOBCD
DATASEGMENT
PROMPTDB"INPUTHEXADECIMAL(4DIGITS):
$'
HEXBUFDB5,0,5DUP(0)
DISPDB0AH,0DH
BCDBUFDB6DUP(0),'$'
DATAENDS
STACK1SEGMENTPARASTACK
DW20HDUP(0)
STACK1ENDS
COSEGSEGMENT
ASSUMECS:
COSEG,DS:
DATA,SS:
STACK1
HEXBCD:
MOVAX,DATA
MOVDS,AX
;输入1~4位十六进制数
LEADX,PROMPT;显示提示信息
MOVAH,09H
INT21H
LEADX,HEXBUF;输入数据
MOVAH,0AH
INT21H
;ASCII码转换为16位二进制数并存入BX中
LEASI,HEXBUF+2;取十六进制数ASCII码首址
MOVBX,0;暂存二进制数的寄存器清零
MOVCH,HEXBUF+1;取输入数据个数
HEX1:
MOVAL,[SI];取一个十六进制数字符
CMPAL,'9'
JBENUMB;小于等于‘9’是数字符
SUBAL,07H;是字母符
NUMB:
ANDAL,0FH
MOVCL,4
SALBX,CL
ORBL,AL
INCSI
DECCH
JNEHEX1
;确定十进制数的符号
MOVBCDBUF,'+'
TESTBX,8000H
JNSPLUS;是正数
MOVBCDBUF,'-';是负数
NEGBX;求补后变为原码
;将二进制数转换为非组合型BCD码,从二进制;数高位起,进行15次加和乘
PLUS:
MOVCH,0FH;“加乘”运算的次数
LOP0:
SHLBX,1;最高位二进制数送CF
CALLADDIT;先加1位二进制数
CALLMULTI;再乘2
DECCH
JNELOP0
SHLBX,1;加最低位二进制数
CALLADDIT
;把非组合型BCD码转换为ASCII码形式
LEADI,BCDBUF+1
MOVCX,5
LOP1:
ORBYTEPTR[DI],30H
INCDI
LOOPLOP1
;显示结果
LEADX,DISP
MOVAH,09H
INT21H
MOVAH,4CH;程序结束
INT21H
;多字节BCD码加1位二进制数子程序
ADDITPROC
LEADI,BCDBUF+5;从低位开始
MOVCL,5;取字节数
ADD1:
MOVAL,[DI];取BCD码
ADCAL,0;加二进制数位(CF)
AAA;十进制数运算校正
MOV[DI],AL;存BCD码
DECDI
DECCL
JNEADD1
RET
ADDITENDP
;多字节BCD码乘2子程序
MULTIPROC
LEADI,BCDBUF+5;从低位开始
MOVCL,5
CLC
MUL1:
MOVAL,[DI];取BCD码
ADCAL,AL;乘2
AAA;十进制数运算校正
MOV[DI],AL;存BCD码
DECDI
DECCL
JNEMUL1
RET
MULTIENDP
COSEGENDS
ENDHEXBCD
四.实验要求:
实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等
五.实验报告:
1、程序说明。
说明程序的功能、结构。
2、调试说明。
包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
3、写出源程序清单和执行结果。
实验三分支程序与循环程序设计
一.实验目的
1、掌握分支程序的结构。
2、掌握分支程序的设计与调试方法。
3、掌握循环程序设计与调试方法
4、掌握正确分配与使用寄存器。
二.实验内容
编程实现:
分别统计下列20个数中大于5、小于零和大于零且小于等于5的数据个数,分别存入字节单元RES1、RES2和RES3中。
BUFFDB-1,20,3,30,-5,15,100,-54,0,4,78,99,-12,32,3,23,-7,24,60,-51
三.实验要求:
实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。
四.程序框图
五.实验报告:
1、程序说明。
说明程序的功能、结构。
2、调试说明。
包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
3、画出程序框图。
5、写出源程序清单和执行结果。
实验四串操作指令及其应用程序的设计与调试运行
一.实验目的
1.熟悉串操作指令的基本格式和使用方法。
2.掌握常用的串操作程序的设计方法。
3.熟悉串操作程序的调试运行过程。
二.实验内容
编制一程序,从键盘输入两个长度不同的字符串,设字符串长度小于25个字符。
要求在屏幕上以右边对齐的形式显示出来。
编程要点:
1.在数据段中设置两个存放提示信息的字符串,一个是提示用户输入,另一个是指示显示信息位置;
2.在数据段中设置两个存放输入字符串的缓冲区;
3.输入字符串采用0AH号DOS功能调用,字符串存入缓冲区时,第2个字节为实际输入字符串的长度,从第3个字节开始为字符串的ASCII码。
4.为了实现显示的右对齐,由于两个字符串缓冲区的长度相同,只需要将两个字符串向缓冲区后面靠齐,再调用09H号DOS功能调用即可达到显示的右对齐。
三.实验要求:
实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。
四.参考程序:
Title字符串右对齐显示
DATASEGMENT
NUMEQU25
PROMPT1DB0AH,0DH,‘STRING:
’,‘$’
PROMPT2DB0AH,0DH,‘RIGHT-ADJUSTINGOFSTRING:
’,OAH,0DH,‘$’
STRING1DBNUM,0,NUMDUP(‘‘),0AH,0DH,‘$’
STRING2DBNUM,0,NUMDUP(‘‘),0AH,0DH,‘$’
DATAENDS
STACK1SEGMENTPARASTACK
DW20HDUP(0)
STACK1ENDS
COSEGSEGMENT
ASSUMECS:
COSEG,DS:
DATA,SS:
STACK1,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVCX,2
LEABX,STRING1
LOP:
LEADX,PROMPT1;显示输入字符串提示信息
MOVAH,09H
INT21H
MOVDX,BX;输入两个字符串
MOVAH,0AH
INT21H
LEABX,SRING2
LOOPLOP
;字符串右对齐处理
LEABX,STRING1+2
CALLMOVE
LEABX,STRING2+2
CALLMOVE
;输出右对齐字符串
LEADX,PROMPT2
MOVAH,09H
INT21H
LEADX,STRING1+2
MOVAH,09H
INT21H
LEADX,STRING2+2
MOVAH,09H
INT21H
MOVAH,4CH
INT21H
;字符串右对齐处理子程序
MOVEPROC
XORCH,CH
MOVCL,-1[BX];字符串传送字节数
MOVSI,CX
ADDSI,BX;传送源串末址
DECSI
MOVDI,BX
ADDDI,NUM-1;传送目的末址
STD
REPMOVSB;字符串传送
MOVCX,NUM
SUBCL,-1[BX];剩余字节数
MOVAL,‘‘
REPSTOSB;剩余字节填空格
RET
MOVEENDP
COSEGENDS
ENDSTART
五.实验报告:
1.程序说明。
说明程序的功能、结构。
2.调试说明。
包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
3.画出程序框图。
4.写出源程序清单和执行结果。
电子科技大学
实验报告
学生姓名:
学号:
一、实验室名称:
二、实验项目名称:
三、实验原理:
四、实验目的:
五、实验内容:
六、实验器材(设备、元器件):
七、实验步骤及操作:
八、实验数据及结果分析:
九、实验结论:
十、总结及心得体会:
十一、对本实验过程及方法、手段的改进建议:
报告评分:
指导教师签字: