《计算机硬件技术基础》实验答案程序Word格式.docx
- 文档编号:19072287
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:51
- 大小:32.32KB
《计算机硬件技术基础》实验答案程序Word格式.docx
《《计算机硬件技术基础》实验答案程序Word格式.docx》由会员分享,可在线阅读,更多相关《《计算机硬件技术基础》实验答案程序Word格式.docx(51页珍藏版)》请在冰豆网上搜索。
MOVBL,AL
ANDAL,0F0H
;
取16进制数的高四位,即
X1
SHRAL,4
MOV[SI+1],AL
存0X1
MOVAL,BL
ANDAL,0FH
取16进制数的低四位,即
X2
MOV[SI+2],AL
存0X2
MOVAH,4CH
第2页共31页
实验二:
分支程序设计实验
(1)编写一个字符比较程序,比较
3个无符号字节数A,B,C的大小,并根据比较结果
对变量K赋值:
如果3个数不相等,则
K=0;
如果3个数中有两个相等,则
K=1;
如果3个数都相等,则
K=2。
DATA
SEGMENT
;
定义待比较数A、B、C,比较结果K
ADB20H
BDB20H
CDB20H
KDB?
ENDS
ASSUMECS:
CODE,DS:
MOVAX,DATA
MOVAL,A
CMPAL,B
对A、B进行比较,不相等则转到COMP2
JNECOMP2
相等则比较A、C
CMPAL,C
JNEK1
A、C不相等则K=1
JMPK2
A、C相等则K=2
COMP2:
MOVBL,B
CMPBL,C
JEK1
对B、C进行比较,相等则
K=1
对A、C进行比较,相等则
K0:
MOVK,0
JMPEXIT
K1:
MOVK,1
K2:
MOVK,2
EXIT:
第3页共31页
(2)编写一个能实现下列表达式的程序:
?
A+BA≤B
N=?
设A,B,C为小于128的正整数。
A-B+CA>
B
ADB22H;
定义A、B、C、N
BDB10H
CDB01H
NDB?
CODE,DS:
MOVAL,A
CMPAL,B
JGCALCUL;
A小于或等于B则N=A+B
ADDAL,B
CALCUL:
SUBAL,B
ADCAL,C
MOVN,AL
第4页共31页
实验三循环程序设计实验
(1)将字符串STRN(以“$”结尾)中的每一个字符均加上偶校验位,并统计有多少个字符因含有奇数个“1而”加上了校验位。
统计结果存于N单元中。
DATASEGMENT
STRNDB'
What$'
;
任意定义一个字串,以“$”结尾
COUNTEQU$-STRN
BUFDBCOUNTDUP(?
)
MOVAX,DATA
MOVDS,AX
MOVAX,DATA
MOVES,AX
LEASI,STRN
LEADI,BUF
MOVCX,COUNT
MOVAL,0
LP1:
MOVBL,[SI];
逐个取字符进行判断
ANDBL,BL;
自己和自己做与运算
JPNEXT
根据PF标志位的变化进行跳转
INCAL
ORBL,80H
NEXT:
MOV[DI],BL
INCSI
INCDI
LOOPLP1
MOVN,AL
MOVAH,4CH
(2)在FIRST开始的一片连续的数据区中存放着100个数据,编写一个程序,统计第1
第5页共31页
个数据,0?
之前的数据个数。
参考源程
序:
FIRSTDB10H,24H,34H,73H,20H,44H,03H,36H,41H;
任取9个数做演示
COUNTEQU$-FIRST
NUMDB?
MOVDL,0
计数值初始为0
MOVCX,COUNT
MOVBX,OFFSETFIRST
MOVAL,[BX]
每次取一个数,与
0比较
CMPAL,00H
JNENEXT
找到0则退出
INCDL
没找到0则计数值加1
INCBX
MOVNUM,DL
第6页共31页
实验四:
子程序设计实验
将BUF开始的10个单元中两位十六进制数转换成ASCII码,并在屏幕上显示出来。
要求码型
转换通过子程序HEXASC实现,参数传送采用寄存器传送方式。
参考源程序:
(1)实现方法一:
远过程调用
BUFDB10H,2FH,0D0H,0FEH,33H,0F0H,20H,10H,3DH,0A2H
COUNTEQU$-BUF;
定义任意长度的一段BUFDATAENDS
STACK1SEGMENTSTACK
DB100DUP(?
);
设置足够深度的栈区
STACK1ENDS
DATA,SS:
STACK1
MOVSI,OFFSETBUF
AGAIN:
MOVAL,[SI]
逐个取数
先对高字节部分转换(寄存器
AL传参)
CALLFARPTRHEXASC
调用子程序
MOVDL,AL
MOVAH,02H
显示高字节部分对应的字符
再对低字节部分转换(寄存器
显示低字节部分对应的字符
MOVDL,20H
显示空格
第7页共31页
LOOPAGAIN
CODEBSEGMENT
CODEB
HEXASCPROCFAR
CMPAL,09H;
判断是不是数字
JAHEXATOF;
是字母则转到HEXATOF
ADDAL,30H;
是数字则对应到数字的ASCII码
JMPENDHEX
HEXATOF:
ADDAL,37H;
是字母则对应到字母的ASCII码
ENDHEX:
RET
HEXASCENDP
CODEBENDS
(2)实现方法二:
近过程调用
MOVAL,[SI];
ANDAL,0FH;
先对高字节部分做转换
CALLHEXASC
第8页共31页
MOVDL,AL;
再对低字节部分做转换
MOVDL,20H;
INCSI;
继续循环或退出
HEXASCPROCNEAR
CMPAL,09H
JAHEXATOF
ADDAL,30H
ADDAL,37H
第9页共31页
实验五:
DOS中断调用实验
(1)如果从键盘上依次输入的是一个数字和一个字母,则输出
“RIGHT”标记后结束程序,
否则输出标记“ERROR”后转向原出错处重做。
试编程实现该功能。
参考源程序:
DATA
MSGDB0AH,0DH,'
RIGHT'
0AH,0DH,'
$'
WRNDB0AH,0DH,'
ERROR'
MOVAH,01H
等待用户输入1个字符并显示
CMPAL,39H
JAEMSG
CMPAL,30H
JBEMSG
判断输入是否是数字,不是则报错
CMPAL,'
A'
Z'
判断输入是否是大写字母,不是则继续
JBEXIT
判断是不是小写字母
a'
z'
不是字母则报错,是字母则转到EXIT
EMSG:
LEADX,WRN
MOVAH,09H
JMPAGAIN
MOVDX,OFFSETMSG
显示“RIGHT”并退出
第10页共31页
(2)编写一程序分类统计字符个数:
即接收键入的一串字符(字符个数不超过
50个,该字
符串用回车作为结束),并按数字、字母和其它字符分类计数,然后将结果存入
digit、letter
和other3个存储单元中,并显示结果。
MSG1DB0AH,0DH,'
Numberofdigit:
'
20H,'
MSG2DB0AH,0DH,'
Numberofletters:
20H,'
MSG3DB0AH,0DH,'
Numberofothercharacters:
20H,'
BUFDB50
DB0
DB50DUP(?
设置足够深的栈区
DIGITDB?
LETTERDB?
OTHERDB?
SEGMENTSTACK
MOVAH,0AH
等待用户输入字符串并显示
MOVDX,OFFSETBUF
MOVSI,OFFSETBUF
MOVCL,[SI+1]
MOV
CH,00H
AL,00H
AH,00H
MOVBH,00H
MOVBL,[SI+2]
CMPBL,30H
JBOTH
ASCII码小于30H则归类为“其它”
CMPBL,3AH
第11页共31页
JBDIG
ASCII码大于等于
30H小于3AH则归类为“数字”
CMPBL,41H
3AH小于41H则归类为“其它”
CMPBL,5BH
JBLET
ASCII码大于等于
41H小于5BH则归类为“字母”
CMPBL,61H
5BH小于61H则归类为“其它”
CMPBL,7BH
ASCII码大于等于61H小于7BH则归类为“字母”
OTH:
“其它”计数器加1
JMPENDLP
DIG:
INCAH
“数字”计数器加1
LET:
INCBH
“字母”计数器加1
ENDLP:
继续循环
MOVDIGIT,AH
统计各类个数
MOVLETTER,BH
MOVOTHER,AL
MOVDX,OFFSETMSG1
显示“数字”有多少个
MOVAL,DIGIT
CALLDISP
MOVDX,OFFSETMSG2
显示“字母”有多少个
MOVAL,LETTER
MOVDX,OFFSETMSG3
显示“其它”有多少个
MOVAL,OTHER
DISP
PROCNEAR
显示子程序
第12页共31页
MOVAH,00H
MOVDH,0AH
DIVDH
MOVCH,AH
ADDAL,30H
MOVDL,AL
MOVAH,02H
ADDCH,30H
MOVDL,CH
RET
DISPENDP
第13页共31页
实验六:
扩展定时器/计数器接口实验
(1)计数器0工作于方式3,编写初始化程序,观察其输出OUT0信号的波形。
修改计数初
值,观察OUT0信号的变化情况。
硬件连接方法:
8254计数器0的CLK0端接规则的脉冲输
入(频率自选),OUT0接示波器的正极;
示波器负极接地。
MOVDX,20FH;
写入计数器0的控制字
MOVAL,00010110B
OUTDX,AL
MOVDX,20CH;
写入计数器0的计数初值
MOVAL,05H
(2)将计数器1和计数器0级联起来,二者均工作于方式3,编写初始化程序,观察OUT1
和OUT0信号的波形,说明二者的关系。
修改计数初值,观察OUT0和OUT1输出波形的变
化情况。
8254计数器1的CLK1端接规则的脉冲输入(频率自选),OUT1接
8254计数器0的CLK0,计数器0的输出OUT0接示波器正极;
第14页共31页
MOVDX,20FH
写入计数器0
的控制字
MOVDX,20CH
的计数初值
MOVAL,01010110B
写入计数器1
MOVDX,20DH
MOVAL,02H
第15页共31页
实验七:
并行输入/输出接口8255A简单编程实验
(1)利用8255A的B口输出控制两组发光二级管
L1,L3,L5,L7和L2,L4,L6,L8
亮灭交替变
化。
分析:
按照题目要求,当
8255A
的B口输出为01010101B(55H)时,发光二极管
L1,L3,L5,L7
会被点亮,当8255A的B口输出为10101010B(0AAH)时,发光
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机硬件技术基础 计算机硬件 技术 基础 实验 答案 程序