微机原理实验报告Word文档下载推荐.docx
- 文档编号:22205351
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:51
- 大小:265.53KB
微机原理实验报告Word文档下载推荐.docx
《微机原理实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《微机原理实验报告Word文档下载推荐.docx(51页珍藏版)》请在冰豆网上搜索。
实验二数据传送实验
1.熟悉Tddebug调试环境和TurboDebugger的使用;
2.掌握与数据有关的不同寻址方式。
将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
参考实验程序:
DDATASEGMENT;
定义源数据段
MSRDB"
HELLO,WORLD!
$"
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;
设置SI
MOVDI,OFFSETMSD;
设置DI
MOVCX,LEN
NEXT:
MOVAL,[SI];
开始传输数据
MOVES:
[DI],AL
INCSI
INCDI
DECCX
JNZNEXT
PUSHES
POPDS;
将附加段寄存器的段值赋给数据段寄存器
MOVDX,OFFSETMSD
MOVAH,9
INT21H
MOVAX,4C00H;
利用DOS功能调用返回DOS状态
CODEENDS
ENDSTART
将程序主体部分的寄存器间接寻址方式改为相对寻址方式,则如下所示:
MOVBX,0
MOVAL,MSR[BX]
MSD[BX],AL
INCBX
LOOPNEXT
1.运行Tddebug软件,选择Edit菜单编写实验程序;
五、实验报告内容及要求
1将参考程序写入轻松汇编编辑框。
2点击保存,然后编译,结果框显示编译成功。
3点击生成,显示链接成功。
4点击运行,显示如图:
实验三数码转换程序实验
掌握不同进制数及编码相互转换的程序设计方法。
PC微机一台。
计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。
因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。
计算机与外设间的数码转换关系如图3-1所示,数码对应关系如表3-1所示。
图3-1计算机与外设间的数码转换关系
1.将ASCII码表示的十进制数转换为二进制数
程序如下:
DATASEGMENT;
定义源数据段
MSRDB"
00012"
LENEQU$-MSR
DATAENDS
CODESEGMENT;
定义代码段
ASSUMECS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETMSR
MOVCX,LEN-1
MOVAL,DS:
[SI];
MOVAH,0
SUBAX,30H
NEXT1:
MOVBX,0AH
MULBX;
将AX中的数乘以10,所得的结果高位保存到DX中,低位保存到AX中
INCSI
MOVDL,DS:
[SI]
MOVDH,0
SUBDX,30H;
将数字对应的ASCII码转换成响应的二进制数
ADDAX,DX
DECCX
JNZNEXT1
MOVCL,16;
CL用作循环NEXT2的计数器,因为5位十进制数转化成二进制只有十六位,所以循环次数为16次
MOVBX,AX
NEXT2:
ROLBX,1
MOVDL,BL
ANDDL,01H
ADDDL,30H;
把BX中的数以二进制形式输出
MOVAH,2H
INT21H
DECCL
JNZNEXT2
MOVAX,4C00H
CODEENDS
ENDSTART
5改变程序中待转换的十进制数,调试运行后观察实验结果,可看到相应的二进制转换结果。
2.将十进制数的ASCII码转换为BCD码
本实验要求将键盘输入的一个五位十进制数54321的ASCII码存放入数据区中,转换为BCD码后,并将转换结果按位分别显示于屏幕上。
若输入的不是十进制数的ASCII码,则输出“FF”。
提示:
一字节ASCII码取其低四位即变为BCD码。
DATASEGMENT;
STRINGDB'
Input:
'
'
$'
MSRDB6,?
6DUP(?
);
数据段MSR用于接收从键盘输入的五位十进制数
MOVAX,DATA
MOVDS,AX;
装载数据段寄存器
LEADX,STRING
MOVAH,09H
MOVDX,OFFSETMSR
MOVAH,0AH
MOVCL,[MSR+1];
CL中保存实际输入的数据的位数,用于控制循环执行的次数
MOVSI,0002H
MOVBX,OFFSETMSR
MOVAL,[BX+SI];
CMPAL,40H
JNCLK1;
大于等于40H则表明输入的不是数字符,跳到LK1输入F
CLC
CMPAL,30
JCLK1;
小于30H则表明输入的不是数字字符,到LK1输出字符F
SUBAL,30H
MOVCH,0
PUSHCX
MOVCL,4
MOVDH,AL
SHLDH,CL
ROLDH,1
MOVDL,DH
ADDDL,30H
MOVAH,02H
POPCX
LK1:
JZLK2
MOVDL,46H;
输出字符F
LK2:
3.将十六进制数的ASCII码转换为十进制数
十六位二进制数的值域为0-65535,最大可转换为五位十进制数。
五位十进制数可表示为:
ND=D4×
104+D3×
103+D2×
102+D1×
10+D0
因此,将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1-D4,并将它们转化为ASCII码。
本实验要求将缓冲区中存放的000CH的ASCII码转换成十进制数,并将转换结果显示在屏幕上。
MSRDW000CH
MDRDB5DUP(?
),'
MOVBX,OFFSETMDR
MOVSI,5
MOVAX,[MSR];
将数据000CH保存到AX当中
DECSI
MOVDX,0
MOVCX,0AH
DIVCX
MOV[BX+SI],DL
CMPAX,0
JNENEXT1
CMPSI,0;
判断SI是否为零,为零则表明五位十进制数的每一位都不为零,否则应给前面为零的位上补上零
JENEXT3
MOVAL,30H
MOV[BX+SI],AL
CMPSI,0
JNENEXT2
NEXT3:
MOVDX,OFFSETMDR
MOVAH,09H
4.BCD码转换为二进制码
本实验要求将四个二位十进制数的BCD码存放在某一内存单元中,转换出的二进制数码存入其后的内存单元中,转换结束,送屏幕显示。
MSRDB01H,02H,03H,04H,05H,06H,07H,08H,4DUP(?
本程序使用非压缩型BCD码
MOVDI,8
MOVCX,4
MOVDH,0AH
MOVSI,1
MOVAL,[BX+SI]
MULDH
ADDAL,[BX+SI]
MOV[BX+DI],AL
MOVCH,AL
MOVCL,8
ROLCH,1
MOVDL,CH
MOVDL,42H;
输出字母B,表示输出的是二进制数
MOVAH,2;
回车换行
MOVDL,13
MOVAH,2
MOVDL,10
ADDBX,2
INCDI
实验四运算类程序实验
1.掌握运算类指令编程及调试方法;
2.掌握运算类指令对各状态标志位的影响及测试方法。
80x86指令系统提供了实现加、减、乘、除运算的基本指令,可对表4-1所示的数据类型进行算术运算。
DATASEGMENT
XDD001565A0H
YDD0021B79EH
ZDB4DUP(?
)
CODESEGMENT
CODE,DS:
MOVBX,OFFSETX
MOVSI,OFFSETY
MOVDI,OFFSETZ
MOVAX,WORDPTR[BX];
取X的低十六位传送到AX当中
ADDAX,WORDPTR[SI];
将Y的低十六位数据与AX相加,结果保存到AX
MOV[DI],AX;
将相加的结果保存到Z
MOVAX,WORDPTR[BX+2];
取X的高位数据
ADCAX,WORDPTR[SI+2];
将Y的高位数据与X的高位数据相加,并加上状态标志CF的值(若有进位则CF为一)
MOV[DI+2],AX
MOVBX,3
MOVAL,[BX+DI];
取转换好德数据的9位数据(从高位到低位每次取8位,总共取四次)
SHRAL,CL;
将高四位转移到低四位
ANDAL,0FH;
将高四位清零,保留第四位数据
CMPAL,0AH;
与0AH比较,大于等于则表示应输出字母A~F,所以转换成相应的ASCII码时应多加7
JBLK1
ADDAL,07H
ADDAL,30H;
将二进制数转换成响应的ASCII码
MOVDL,AL;
将要输入的字符的ASCII码保存到DL中并调用2号功能输出
因为二进制数转换成十六进制数时,每四位二进制数转换成一位十六进制数,所以一个字节的数字需要转换两次,这次是转低四位
将高四位清零,保存低四位的数据
与0AH比较,大于等于则表示输出字母A~F,转换成相应的ASCII码应多加7
JBLK2
将二进制数据转换成响应的ASCII码
将要输出的字符的ASCII码保存到DL中并调用2号功能输出
DECBX;
BX既保存数据地址的偏移量,又控制循环体的循环次数,BX减1,既指向了下一个数据,又使循环次数减1
CMPBX,0
JGENEXT1;
BX小于零时退出循环
MOVAX,4C00H;
退出程序
实验五分支程序设计实验
1.掌握分支程序的设计方法。
程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如图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;
4.更改数据区中的数据,考察程序的正确性。
根据实验要求编写程序并调试,写出程序调试过程及运行情况。
定义数据段
D1DB0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H
C1EQU$-D1;
D1的数据长度
MOVCX,C1-1;
设置循环次数
MOVSI,0;
初始化SI
MOVBL,D1[SI];
将D1中的数据逐个移到BL,BH
MOVBH,D1[SI]
L1:
INCSI;
SI增加1转到下一个数据
MOVAL,D1[SI];
将此数据移到AL
CMPAL,BL;
比较AL和BL
JNBL2;
AL不小于BL,则跳转到L2
MOVBL,AL;
小于等于则把AL和BL互换
L2:
CMPAL,BH;
比较AL和BH
JNAL3;
不大于则跳转到L3
MOVBH,AL;
大于等于把AL,BH互换
L3:
LOOPL1;
循环L1直至CX为零
CALLDIS;
调用显示子程序
MOVDL,0AH;
换行
显示BL
MOVDL,0DH;
回车
MOVBL,BH
显示BH
MOVAH,4CH
DISPROC;
显示子程序
MOVCH,2;
设置循环次数
MOVCL,4;
设置移动位数
NEXT:
ROLBL,CL;
将BL最高位移到最低位
ANDDL,0FH;
取DL最低位
转换为对应的ASCII码
CMPDL,39H;
与39H比较
JLEPRINT;
小于等于则跳转到PRINT
ADDDL,7;
大于则加上07H
PRINT:
显示ASCII码对应的字符
DECCH
JNZNEXT
RET
DISENDP
实验六循环程序设计实验
1.掌握循环程序的设计方法。
本实验要求通过求某数据区内负数的个数来表现循环程序的结构形式。
要求实验程序在数据区中存放一组数据,为统计负数的个数,逐个判断区内的数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得到区内所包含负数的个数。
循环程序的结构示意如图6-1所示。
图6-1循环结构示意图
1.运行Tddebug软件,选择Edit菜单编写实验程序,提供10字节的数据:
12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01H;
;
实验六
MDB20,59,61,21,89,103,2,124,125,245,204,214,198,157,120,209,15,137,206,113
NDB8DUP(?
MOVBX,OFFSETM
MOVDI,OFFSETN
MOVCL,0
MOVAL,[BX]
CMPAL,80H
JBLK
MOV[DI],AL
INCCL
LK:
INCBX
CMPBX,20
JBNEXT1
MOVCH,CL
MOVDL,42H
实验七8259中断控制器应用实验
1.学习可编程中断控制器8259的工作原理。
2.掌握可编程中断控制器8259的应用编程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 报告