4085282电083李璀.docx
- 文档编号:5916306
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:68
- 大小:667.84KB
4085282电083李璀.docx
《4085282电083李璀.docx》由会员分享,可在线阅读,更多相关《4085282电083李璀.docx(68页珍藏版)》请在冰点文库上搜索。
4085282电083李璀
信息工程学院实验
实验一显示程序实验
一、实验目的
1.掌握在PC机上以十六进制形式显示数据的方法;
2.掌握部分DOS功能调用使用方法;
3.熟悉Tddebug调试环境和TurboDebugger的使用。
二、实验所用设备
1.PC微机一台。
三、实验内容
一般来说,程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。
本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。
实验中可使用DOS功能调用(INT21H)。
(1)显示单个字符输出
入口:
AH=02H
调用参数:
DL=输出字符
(2)显示字符串
入口:
AH=09H
调用参数:
DS:
DX=串地址,’$’为结束字符
(3)键盘输入并回显
入口:
AH=01H
返回参数:
AL=输出字符
(4)返回DOS系统
入口:
AH=4CH
调用参数:
AL=返回码
四、实验步骤
1.运行Tddebug软件,选择Edit菜单,根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图1-1示;
2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;
3.使用Rmrun菜单中的Run,运行程序,观察运行结果;
4.使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;
5.更改数据区中的数据,考察程序的正确性。
图1-1显示程序实验流程图
五、程序清单
DATASEGMENT
MESDB'laoshihao:
',0AH,0DH,'$'
SDDB'b'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMES
MOVAH,09H
INT21H
MOVDI,OFFSETSD
MOVAL,DS:
[DI]
ANDAL,0F0H
SHRAL,4
CMPAL,0AH
JBL1
ADDAL,07H
L1:
ADDAL,30H
MOVDL,AL
MOVAH,02H
INT21H
MOVAL,DS:
[DI]
ANDAL,0FH
CMPAL,0AH
JBL2
ADDAL,07H
L2:
ADDAL,30H
MOVDL,AL
MOVAH,02H
INT21H
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
六、实验调试过程
调试过程中出现警告,显示没有使用堆栈段。
但是程序编写本身没有使用,因此程序运行相对正常。
第一个实验熟悉了轻松汇编软件的操作,为之后的实验打下了基础。
七、实验运行结果
实验二数据传送实验
一、实验目的
1.熟悉Tddebug调试环境和TurboDebugger的使用;
2.掌握与数据有关的不同寻址方式。
二、实验所用设备
1.PC微机一台。
三、实验内容
将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
实验程序:
DDATASEGMENT
MSRDB"LAOSHIXINKULE!
$"
LENEQU$-MSR
DDATAENDS
EXDASEGMENT
MSDDBLENDUP(?
)
EXDAENDS
MYSTACKSEGMENTSTACK
DW20DUP(?
)
MYSTACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DDATA,ES:
EXDA
START:
MOVAX,DDATA
MOVDS,AX
MOVAX,EXDA
MOVES,AX
MOVSI,OFFSETMSR
MOVDI,OFFSETMSD
MOVBX,0
MOVCX,LEN
NEXT:
MOVAL,MSR[BX]
MOVES:
MSD[BX],AL
INCBX
LOOPNEXT
PUSHES
POPDS
MOVDX,OFFSETMSD
MOVAH,9
INT21H
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
四、实验步骤
1.运行Tddebug软件,选择Edit菜单编写实验程序;
2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;
3.使用Rmrun菜单中的Run,运行程序,观察运行结果;
4.使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;
5.更改数据区中的数据,考察程序的正确性。
五、实验调试过程
程序中使用了寄存器相对寻址的方式。
编译、连接、运行后程序运行正常。
输入的字符显示在屏幕上。
六、实验运行结果
实验三数码转换程序实验
一、实验目的
掌握不同进制数及编码相互转换的程序设计方法。
二、实验所用设备
PC微机一台。
三、实验步骤
1.运行Tddebug软件,选择Edit菜单编写实验程序;
2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;
3.使用Rmrun菜单中的Run,运行程序,观察运行结果;
4.使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;
5.更改数据区中的数据,考察程序的正确性。
四、实验内容
计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。
因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。
计算机与外设间的数码转换关系如图3-1所示,数码对应关系如表3-1所示。
图3-1计算机与外设间的数码转换关系
1.将ASCII码表示的十进制数转换为二进制数
十进制数可以表示为:
Dn×10n+Dn-1×10n-1+…+D0×100
=Di×10i其中Di代表十进制数1、2、3…9、0。
上式可以转换为:
ΣDi×10i=((…(Dn×10+Dn-1)×10)+Dn-2)×10+…+D1)×10+D0
由上式可归纳十进制数转换为二进制的方法:
从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数结果。
本实验要求将缓冲区中的一个五位十进制数00012的ASCII码转换成二进制数,并将转换结果按位显示在屏幕上。
转换过程的参考流程如图3-2所示。
(1)实验流程图
图3-2十进制ASCII转换为
二进制数参考流程
(2)实验程序
DATASEGMENT
MSRDB"00012"
LENEQU$-MSR
DATAENDS
CODESEGMENT;
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETMSR
MOVCX,LEN-1
MOVAL,DS:
[SI]
MOVAH,0
SUBAX,30H
A1:
MOVBX,0AH
MULBX
INCSI
MOVDL,DS:
[SI]
MOVDH,0
SUBDX,30H
ADDAX,DX
DECCX
JNZA1
MOVCL,16
MOVBX,AX
A2:
ROLBX,1
MOVDL,BL
ANDDL,01H
ADDDL,30H
MOVAH,2H
INT21H
DECCL
JNZA2
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
(3)调试过程
调试过程正常没有出现问题。
(4)实验结果
2.将十进制数的ASCII码转换为BCD码
本实验要求将键盘输入的一个五位十进制数54321的ASCII码存放入数据区中,转换为BCD码后,并将转换结果按位分别显示于屏幕上。
若输入的不是十进制数的ASCII码,则输出“FF”。
提示:
一字节ASCII码取其低四位即变为BCD码。
转换部分的实验流程参见3-3。
(1)实验流程
图3-3十进制ASCII转换为
BCD码参考流程
(2)实验程序
DATASEGMENT
STRINGDB'INPUT:
','$'
STRING1DB'OUTPUT:
','$'
MSRDB6,?
6DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEADX,STRING
MOVAH,09H
INT21H
MOVDX,OFFSETMSR
MOVAH,0AH
INT21H
MOVDL,0AH
MOVAH,02H
INT21H
MOVDL,0DH
MOVAH,02H
INT21H
LEADX,STRING1
MOVAH,09H
INT21H
MOVCL,[MSR+1]
MOVSI,0002H
MOVBX,OFFSETMSR
A1:
MOVAL,[BX+SI]
CMPAL,40H
JNCB1
SUBAL,30H
MOVCH,0
PUSHCX
MOVCL,4
MOVDH,AL
SHLDH,CL
A2:
ROLDH,1
MOVDL,DH
ANDDL,01H
ADDDL,30H
MOVAH,02H
INT21H
DECCL
JNZA2
POPCX
INCSI
DECCL
JNZA1
B1:
JZB2
MOVDL,46H
MOVAH,02H
INT21H
INCSI
DECCL
JNZA1
B2:
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
(3)调试过程
调试过程中在换行显示时遇到了问题,无法换行显示。
经过检查发现在显示过程中的换行代码写错了,改正之后程序显示正常。
(4)实验结果
3.将十六进制数的ASCII码转换为十进制数
十六位二进制数的值域为0-65535,最大可转换为五位十进制数。
五位十进制数可表示为:
ND=D4×104+D3×103+D2×102+D1×10+D0
因此,将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1-D4,并将它们转化为ASCII码。
本实验要求将缓冲区中存放的000CH的ASCII码转换成十进制数,并将转换结果显示在屏幕上。
(1)实验流程
图3-4将十六进制数的ASCII码转换为十进制数
(2)实验程序
DATASEGMENT
MSRDW000CH
MDRDB5DUP(?
),'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVBX,OFFSETMDR
MOVSI,5
MOVAX,[MSR]
A1:
DECSI
MOVDX,0
MOVCX,0AH
DIVCX
ADDDL,30H
MOV[BX+SI],DL
CMPAX,0
JNEA1
JEA3
A2:
DECSI
MOVAL,30H
MOV[BX+SI],AL
CMPSI,0
JNEA2
A3:
MOVDX,OFFSETMDR
MOVAH,09H
INT21H
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
(3)调试过程
调试过程中在显示时遇到了问题,无法逐个显示。
改为直接显示之后程序显示正常。
(4)实验结果
4.BCD码转换为二进制码
本实验要求将四个二位十进制数的BCD码存放在某一内存单元中,转换出的二进制数码存入其后的内存单元中,转换结束,送屏幕显示。
(1)实验流程
图3-5BCD码转换为二进制码
参考流程
(2)实验程序
DATASEGMENT
MSRDB03H,02H,03H,05H,07H,06H,07H,08H,4DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVBX,OFFSETMSR
MOVDI,8
MOVCX,4
MOVDH,0AH
A1:
MOVSI,1
MOVAL,[BX+SI]
MULDH
DECSI
ADDAL,[BX+SI]
MOV[BX+DI],AL
PUSHCX
MOVCH,AL
MOVCL,8
A2:
ROLCH,1
MOVDL,CH
ANDDL,01H
ADDDL,30H
MOVAH,02H
INT21H
DECCL
JNZA2
POPCX
MOVDL,42H
MOVAH,02H
INT21H
MOVAH,2
MOVDL,13
INT21H
MOVAH,2
MOVDL,10
INT21H
ADDBX,2
INCDI
DECCX
JNZA1
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
(3)调试过程
调试过程中没有出现问题程序显示正常。
(4)实验结果
实验四运算类程序实验
一、实验目的
1.掌握运算类指令编程及调试方法;
2.掌握运算类指令对各状态标志位的影响及测试方法。
二、实验所用设备
1.PC微机一台。
三、实验步骤
1.运行Tddebug软件,选择Edit菜单编写实验程序;
2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;
3.使用Rmrun菜单中的Run,运行程序,观察运行结果;
4.使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;
5.更改数据区中的数据,考察程序的正确性。
四、实验内容
80x86指令系统提供了实现加、减、乘、除运算的基本指令,可对表4-1所示的数据类型进行算术运算。
表4-1数据类型算术运算表
1.二进制双精度加法运算
本实验要求计算X+Y=Z,将结果Z输出到屏幕,其中X=001565A0H,Y=0021B79EH。
实验利用累加器AX,先求低十六位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。
由于低位和可能向高位有进位,因而高位字相加语句需用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。
在80386以上微机中可以直接使用32位寄存器和32位加法指令完成本实验的功能。
(1)实验程序
DATASEGMENT
XDW065A0H,0015H
YDW0B79EH,0021H
ZDW2DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,2
CLC
MOVSI,0
L1:
MOVAX,X[SI]
ADCAX,Y[SI]
MOVZ[SI],AX
INCSI
INCSI
LOOPL1
MOVBX,Z[2]
CALLLIST_BX
MOVBX,Z
CALLLIST_BX
MOVAH,4CH
INT21H
LIST_BXPROC
MOVCH,4
MOVCL,4
NEXT:
ROLBX,CL
MOVDL,BL
ANDDL,0FH
ADDDL,30H
CMPDL,39H
JLEPRINT
ADDDL,7
PRINT:
MOVAH,2
INT21H
DECCH
JNZNEXT
RET
LIST_BXENDP
CODEENDS
ENDSTART
(2)调试过程
调试过程中一开始将X、Y的高低位弄反了,结果输出结果错误改正后没有出现问题程序显示正常。
(4)实验结果
实验五分支程序设计实验
一、实验目的
1.掌握分支程序的设计方法。
二、实验所用设备
1.PC微机一台。
三、实验内容
程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如图5-1所示。
本实验要求通过求无符号字节序列中的最大值和最小值来反映分支程序的结构形式。
图5-1分支结构示意图
实验可以使用BH,BL作为暂存现行的最大值和最小值,且在程序的初始,将BH和BL初始化为首字节的内容,然后进入循环操作。
在循环操作中,依次从字节序列中逐个取出一个字节的内容与BH,BL进行比较,若取出的字节内容比BH的内容大或比BL中的内容小,则修改之。
当循环结束操作时,将BH,BL分别送屏幕显示。
参考实验流程如图5-2所示。
四、实验步骤
1.运行Tddebug软件,选择Edit菜单编写实验程序,提供8字节的数据:
0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H;
2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;
3.使用Rmrun菜单中的Run,运行程序,观察运行结果;
4.更改数据区中的数据,考察程序的正确性。
五、实验流程
根据实验要求编写程序并调试,写出程序调试过程及运行情况。
图5-2分支程序实验流程图
六、实验程序
DATASEGMENT
D1DB0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H
C1EQU$-D1
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,C1-1
MOVSI,0
MOVBL,D1[SI]
MOVBH,D1[SI]
L1:
INCSI
MOVAL,D1[SI]
CMPAL,BL
JNBL2
MOVBL,AL
L2:
CMPAL,BH
JNAL3
MOVBH,AL
L3:
LOOPL1
CALLDISP
MOVDL,0AH
MOVAH,2
INT21H
MOVDL,0DH
MOVAH,2
INT21H
MOVBL,BH
CALLDISP
MOVAH,4CH
INT21H
DISPPROC
MOVCH,2
MOVCL,4
NEXT:
ROLBL,CL
MOVDL,BL
ANDDL,0FH
ADDDL,30H
CMPDL,39H
JLEPRINT
ADDDL,7
PRINT:
MOVAH,2
INT21H
DECCH
JNZNEXT
RET
DISPENDP
CODEENDS
ENDSTART
七、实验调试过程
调试过程没有出现问题程序显示正常。
八、实验结果
实验六循环程序设计实验
一、实验目的
1.掌握循环程序的设计方法。
二、实验所用设备
1.PC微机一台。
三、实验内容
本实验要求通过求某数据区内负数的个数来表现循环程序的结构形式。
要求实验程序在数据区中存放一组数据,为统计负数的个数,逐个判断区内的数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得到区内所包含负数的个数。
循环程序的结构示意如图6-1所示。
图6-1循环结构示意图
四、实验步骤
1.运行Tddebug软件,选择Edit菜单编写实验程序,提供10字节的数据:
12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01H;
2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;
3.使用Rmrun菜单中的Run,运行程序,观察运行结果;
4.更改数据区中的数据,考察程序的正确性。
五、实验程序
DATASEGMENT
D1DB12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01H
C1EQU$-D1
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,C1
MOVBL,0
MOVSI,0
L1:
MOVAL,D1[SI]
CMPAL,0
JNSL2
INCBL
L2:
INCSI
LOOPL1
MOVCH,2
MOVCL,4
NEXT:
ROLBL,CL
MOVDL,BL
ANDDL,0FH
ADDDL,30H
CMPDL,39H
JLEPRINT
ADDDL,7
PRINT:
MOVAH,2
INT21H
DECCH
JNZNEXT
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
六、实验调试过程
调试过程没有出现问题程序显示正常。
七、实验结果
汇编实验实验心得:
汇编语言是本学期新学习的一门语言,在刚开始学习的时候确实遇到了很大的困难,他完全不同于C语言,但是老师上课讲解的非常细心,做实验的时候遇到的一些问题老师也会非常耐心的回答。
因此经过老师的指点和自己的努力,我完成了汇编实验的要求内容。
基本掌握了汇编语言的编写方法。
为以后的学习打下了坚实的基础。
。
实验十一8259中断控制器应用实验
一、实验目的
1.学习中断控制器8259的工作原理;
2.掌握可编程控制器8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 4085282 083 李璀
![提示](https://static.bingdoc.com/images/bang_tan.gif)