微机原理与接口技术复习题级11Word文档下载推荐.docx
- 文档编号:18776554
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:27
- 大小:23.66KB
微机原理与接口技术复习题级11Word文档下载推荐.docx
《微机原理与接口技术复习题级11Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术复习题级11Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。
M2DW?
MOVAL,X1
MOVAH,0
MULX2
MOVM1,AX
IMULX2
MOVM2,AX
四、定义一个带符号的字节数组,数组的长度(元素个数)至少为10,然后从中找出最小元素和最大元素,并把它们分别保存到字节变量X1和X2中。
ARRAYDW-94,175,22,214,400
DW1,500,300,-33,20,3
COUNTEQU($-ARRAY)/2
X1DW?
;
最小元素
X2DW?
最大元素
DATAENDS
CODESEGMENT
ASSUMECS:
BEGIN:
MOVAX,DATA
MOVDS,AX
LEABX,ARRAY
MOVAX,[BX]
MOVDX,[BX]
MOVCX,COUNT
MAX:
CMPDX,[BX]
JGEMIN;
大于或等于转移
MIN:
CMPAX,[BX]
JLESKIP;
小于或等于转移
MOVAX,[BX]
SKIP:
LOOPMAX
MOVX1,AX
MOVX2,DX
五、定义两个字节类型的数组,统计既属于第一个数组又属于第二个数组的元素个数,统计结果保存到变量RESULT中。
DATA
SEGMENT
ARRY1
DB
1,2,3,4,5,6,7,8,9,10
C1
EQU
$-ARRY1
ARRY2
0,2,3,7,6,8,9,4,2,22
C2
$-ARRY2
RESULT
0
ENDS
CODE
ASSUME
CS:
START:
CX,C1
LEA
SI,ARRY1
LEA
BX,ARRY2
DX,C2
AL,[SI]
CALL
COUNTER
INC
SI
LOOP
GOON
AH,4CH
INT
21H
PROC
NEXT:
DEC
DX
CMP
AL,[BX]
JE
ADDONE
BX
DX,0
JNE
NEXT
JMP
EXIT
ADDONE:
EXIT:
RET
ENDP
ENDSTART
六、对无符号字变量X1和X2分别进行初始化,然后采用辗转相除法求它们的最大公约数,结果保存到字变量RESULT中。
X1DW60
X2DW75
MOVDS,AX
MOVAX,X1
MOVBX,X2
CMPAX,BX;
比较前者是否大于后者以便相除
JAEGOON;
无符号,大于或等于转移
XCHGAX,BX;
前者小于后者则交换
MOVDX,0
DIVBX;
对于(DX,AX)/SRC,结果保留在(余数)DX和(商)AX中
MOVAX,BX;
将除数放在被除数中
MOVBX,DX;
将余数放在除数中,完成辗转
CMPDX,0;
对余数位置进行判断,如果等于0则结束运算
JNEGOON
MOVRESULTAX
MOVAH,4CH
INT21H
七、对字节变量VALUE进行初始化,然后从一个给定的字节数组中查找与该变量等值的元素,数组的长度保存在变量LEN中。
如果找到,则把该元素从数组中删除,并且修改数组的长度;
如果未找到,则不做任何处理。
ARYDB1,2,3,4,5,6,7,8,9,10
LENEQU$-ARY
VALUEDB10
DATA,ES:
MOVDS,AX
MOVES,AX
MOVAX,VALUE
LEADI,ARY
MOVCX,LEN
CLD
REPNESCASB
JNESTOP
CMPCX,0
JESKIP
MOVSI,DI
DECDI
REPMOVSB
DECLEN
STOP:
MOVAH,4CH
CODEENDS
八、定义一个带符号的字节数组,数组的长度(元素个数)至少为10。
然后将该数组中的正、负数分开,正数和零存入BUF1缓冲区,负数存入BUF2缓冲区。
DATASEGMENT
ARRAYDB1,2,3,-1,-2,-3,0,4,5,6
COUNTEQU$-ARRY1
BUF1DB5DUP(?
)
BUF2DB5DUP(?
DATAENDS
CODESEGMENT
DATA
MOVAX,DATA
MOVDS,AX
LEASI,ARRAY
MOVCX,COUNT;
将长度放到CX中
MOVAL,[SI]
MAX:
CMPAX,0
JLEMIN
MOVBUF1,AL
JMPSKIP
MOVBUF2,AL
INCSI
LOOPGOON
MOVAH,4CH
九、按从小到大的顺序以十进制形式在屏幕上显示1~10的平方,相邻两个数之间以空格分隔。
ASCDB5DUP(?
MOVBL,1
MOVAL,BL
MULAL;
获得1,并自乘
CALLOUTPUT
CMPAX,100
JAESTOP
INCBL
JMPGOON
STOP:
MOVAH,4CH
INT21H
OUTPUTPROC
PUSHAX
PUSHBX;
将BX送入堆栈保存
LEASI,ASC+4;
将指针指向保存十进制各个位的数组的最末尾
MOVBX,10
MOVCX,0
MOVDX,0;
初始化DX,用作记录每次的余数
DIVBX;
AX除以BX,即获得商放在AX中,DX放余数
ADDDL,48;
将余数,即最末尾的数直接转换为ASC码对应的数
MOV[SI],DL
DECSI
INCCX
CMPAX,0
JNENEXT
SHOW:
INCSI
MOVDL,[SI]
MOVAH,2
LOOPSHOW
MOVDL,’空格’
POPBX
POPAX
RET
OUTPUTENDP
十、按从小到大的顺序以十进制形式在屏幕上显示Fibonacci数列100以内各项的值,相邻两项之间以空格分隔。
其中第1项Fib
(1)=1,第2项Fib
(2)=1,以后各项按下列公式计算:
Fib(n)=Fib(n-2)+Fib(n-1) n>2
十一、从键盘输入一个字符串,然后将其中所有的小写字母转换成对应的大写字母,并在屏幕上显示转换后的字符串。
STRINGDB100
DB?
DB100DUP(?
LEADX,STRING;
将字符串的偏移地址放入dx
MOVAH0AH;
调用10号功能输入一个字符串
MOVCL,STRING+1;
将字符串的长度放入cl
MOVCH,0
LEASI,STRING+2;
将指针指向字符串的内容
MOVAL,[SI];
一个一个地读取内容
CMPAL,’a’
JBSKIP;
小于a
CMPAL,’z’
JASKIP;
大于z
SUBAL,32;
大于a且小于z的统一减32,即变大写
MOVDL,AL;
将前面没有在a,z范围的普通字符放入dl准备输出
MOVAH,02H;
调用2号功能输出
INCSI;
指针下移准备下一个
十二、从键盘输入一个字符串,统计其中大写字母、小写字母和数字字符的个数,并将统计结果分别存入变量X1、X2和X3中。
STR
100;
最多可输入的字符数
DB?
实际输入的字符数
DB100
DUP(?
);
存放输入的字符数
X1
0;
大写字母
X2,DB
;
小写字母
X3
数字字符
ENDS
DX,STR
;
输入一个字符串
MOV
AH,0AH
INT
CL,STR+1
MOVCH,0
LEASI,STR+2
CMP
[SI],’A’
;
65与'
A'
做比较
JAE
BIGORSMALL
无符号,大于或等于
INC
X3
BIGORSMALL:
SI,‘Z’
90
JBE
ADDBIG
无符号,小于或等于转移
SI,’a’
;
97
SMALL
X3
JMP
STOP
SMALL:
SI,’z’
122
ADDSMALL
ADDBIG:
X1
ADDSMALL:
X2
INCSI
MOV
INT
END
START
十三、用某个十进制数对字变量VALUE进行初始化,然后将其值转换为十六进制数并在屏幕上输出。
VALUEDW12345
MOVBX,VALUE
MOVCX,4
ROLBX,1
MOVDX,BX;
将数字取出处理,原数据不变
ANDDL,0FH;
单独抽取最低那位
CMPDL,9;
和9比较看看是要转字母还是直接输出数字
JBESKIP;
小于或等于9,即纯数字直接转ASC码
ADDDL,7;
7是ASC数字和字母之间的差
ADDDL,30H;
转ASC码
ADDDL,”H”;
十四、从键盘输入一个不超过4位的十进制数,把该数的值保存到变量VALUE中。
要求程序能对非法输入(指按下了非数字键)进行检测,并在屏幕上显示该十进制数,当用户按回车键时输入结束。
VALUEDW?
MOVBX,0;
用作累加
MOVCX,4;
循环计数
MOVAH,7;
键盘输入字符无回显
INT21H
CMPAL,ODH;
和回车做比较,如果相同则表示输入结束
JESTOP
CMPAL,’0’;
和0做比较,小于则不输入
JBNEXT
CMPAL,’9’;
和9做比较,大于则不输入
JANEXT
MOVDL,AL;
纯数字直接输出
MOVAH,2
ANDAL,0FH
CALLMUL10
MOVAH,0
ADDBX,AX;
累加
LOOPNEXT
STOP:
MOVVALUE,BX;
将数值赋给VALUE
MUL10PROC
SALBX,1;
乘2
MOVDX,BX
乘4
乘8
ADDBX,DX;
扩大十倍
RET
MUL10ENDP
十五、某微型机的中断系统由3片8259A组成,以级联方式进行连接。
其中作为主片的8259A的端口地址为20H和21H,工作方式为特殊完全嵌套、电平触发、缓冲及中断非自动结束,中断类型号为48~4FH。
第一个从片8259A的端口地址为40H和41H,工作方式为完全嵌套、电平触发、缓冲及中断非自动结束,中断类型号为60~67H,中断请求输出端INT与主片的IR3连接在一起;
第二个从片8259A的端口地址为42H和43H,工作方式为完全嵌套、电平触发、缓冲及中断非自动结束,中断类型号为68~6FH,中断请求输出端INT与主片的IR5连接在一起。
请编写程序分别对上述三个8259A芯片进行初始化。
主片的初始化
MOVDX,20H
MOVAL,00011001B;
ICW1电平触发、缓冲及中断非自动结束
OUTDX,AL
MOVDX,21H
MOVAL,48H;
ICW2中断类型号
MOVAL,00010100B;
ICW3
MOVAL,00011101B;
ICW4
OUTDX,AL
第一个从片
MOVDX,40H
ICW1
MOVDX,41H
MOVAL,60H;
ICW2
MOVAL,00000011B;
ICW3与主片的IR3连接在一起
MOVAL,00001001B;
第二个从片
MOVDX,42H
MOVDX,43H
MOVAL,68H;
MOVAL,00000101B;
MOVAL,00001001B;
十六、8255A以查询方式向打印机输出数据。
假设8255A的端口A工作在方式1,数据输出,打印机的BUSY信号连接到PC4,三个端口以及控制寄存器的地址分别为60~63H。
写出打印机驱动程序,将内存缓冲区BUFFER中的2000个字节的数据发送到打印机输出,请参考教材第253页的例7.6。
BUFFERDB2000HDUP(?
MOVDX,63H;
获得操作控制口地址
MOVAL,10101000B;
编写控制字
OUTDX,AL;
将控制字写入控制口
BX,BUFFER
MOVCX,2000;
将要传送的字数放入CX
L1:
MOVDX,62H;
获得C端口的地址
INAL,DX;
从C端口调回是否忙的值
TESTAL,00010000B;
测试是否正忙
JNZL1;
JNZ为判断ZF是否为0
MOVAL,[BX];
将即将传送的字的地址放
MOVDX,60H;
获得端口A,即输出端的地址
OUTDX,AL;
将数据输出
INCBX;
修改地址
LOOPL1
十七、8255A以中断方式向打印机输出数据。
假设8255A的端口A工作在方式1,数据输出,其中断请求信号通过PC3连接到8259A的IR2,端口B和端口C不用,三个端口以及控制寄存器的地址为60~63H;
8259A的工作方式为电平触发、单片、完全嵌套、非缓冲且中断非自动结束,中断类型号为08~0FH,端口地址为20~21H。
要求写出主程序和中断服务程序,在主程序中分别对8259A、8255A和中断向量表初始化,在中断服务程序中向打印机输出字符,请参考老师在上课时讲解的例题。
BUFFERDB2000DUP(?
COUNTDW2000
CLI;
CLI(CLEAR
INTERRUPT)
中断标志置0指令使
IF
=
0.
MOVDX,20H
MOVAL,00011011B;
OUTDX,AL
MOVDX,21H
MOVAL,08H;
MOVAL,00000001B;
ICW4,这里是单片不写ICW3
INAL,DX
ANDAL,11111011B;
设置8259A的中断屏蔽字
MOVDX,63H;
获得操作控制口地址,控制器端口是数字最大的60-63H
MOVAL,10100000B;
8255A编写控制字
OUTDX,AL;
MOVAL,00000111B;
PC3,查格式表写出
MOVDX,SEGPRINT;
以下都是中断向量表初始化
MOVDS,DX
MOVDX,OFFSETPRINT
MOVAL,0AH;
设置中断号
AL=中断号
MOVAH,25H;
设置中断向量
INT21H;
中断向量表初始化到这
MOVAX,DATA
MOVDS,AX
LEABX,BUFFER
STI;
STI(SET
中断标志置1指令使
1;
WAIT0:
CMPCOUNT,0;
等待中断
JNEWAIT0
PRINTPROC
MOVAL,[BX];
向A端传送
MOVDX,60
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 复习题 11