微机原理与接口技术复习题1.docx
- 文档编号:7980154
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:13
- 大小:26.21KB
微机原理与接口技术复习题1.docx
《微机原理与接口技术复习题1.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术复习题1.docx(13页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术复习题1
1.4请完成以下计算:
3ACH=(1110101100)B=(100101000000)BCD
1.6设字长为8位,用补码形式完成下列计算,要求有运算结果并讨论是否发生溢出?
120+18-33-37
-90-7050+84
答:
120+18
其补码形式分别为:
(120)补=01111000(18)补=00010010
01111000
+00010010
10001010
由于Cs=0,Cp=1,因此有溢出,结果错误
-33-37
其补码形式为:
(-33)补=11011111(-37)补=11011011
11011111
+11011011
10111010
由于Cs=1,Cp=1,所以没有溢出,结果正确
-90-70
其补码形式为:
(-90)补=10011100(-70)补=10111010
10011100
+10111010
01010110
由于Cs=1,Cp=0,所以有溢出,结果错误
第3章
3.1指出下列各指令中源操作数和目的操作数的寻址方式:
⑵AAA⑶JMP2200H
3.1解答
⑵AAA
源操作数:
寄存器寻址AL(也称隐含寻址);目的操作数:
寄存器寻址
⑶JMP2200H
程序转移段内直接寻址方式
3.2若AX=0ABCDH,BX=7F8FH,CF=1.求分别执行8086CPU指令
⑺XORAX,BX⑻IMULBL
后,AX寄存器中的内容,并指出标志寄存器SF,ZF,AF,PF,CF及OF的状态。
3.2解答
⑺AX=D442H,SZAPCO=10X100B
⑻AX=1683H,SZAPCO=XXXX11B
3.3若AL=78H,BL=87H,
⑴求执行指令
ADDAL,BL
DAA
之后,AL=?
、标志AF=?
、CF=?
⑵若执行指令SUBAL,BL与DAS后,AL=?
、标志AF=?
、CF=?
3.3解答
⑴AL=65H,AF=1,CF=1。
⑵AL=91H,AF=0,CF=1。
3.4指出下列指令中哪些是错误的,并指出错在何处?
⑺INAL,DX⑻OUT1C0H,AX
3.4解答
⑺对
⑻错,输出指令的地址若是16位,必须用DX间址。
3.5连续执行以下指令,填写执行指令的结果(MEM为存储器物理地址)。
MOVAX,3380H
MOVCX,0F000H
MOVDS,AX
MOVSI,CX
SUBCX,AX;⑴CX=bc80hH,CF=0B
MOV[SI],CX;⑵[SI]=80H,[SI+1]=bcH
SBB[SI],AL;⑶[SI]=0H,MEM=f000H
INCBYTE[SI];⑷[SI]=1H,ZF、CF、PF=0、0、1B
MOVAL,08
SBBAX,09;⑸AX=32ffH,CF、AF=0、1B
AAS;⑹AX=3109H,CF、AF=1、1B
SUBAL,68H;⑺AL=a1H,CF、AF=1、0B
DAS;⑻AL=41H
ANDAL,0FH
MOVBX,-10
NEGBX;⑼BX=0aH
MOVDL,60H
MULDL;﹙10﹚AX=60H
ORAX,0FF00H
CWD;﹙11﹚AX=ff60H
IDIVBX;﹙12﹚AX=fff0H,DX=0H
MOVAH,4CH
INT21H
3.5解答
⑴CX=BC80H,CF=0B
⑵[SI]=80H,[SI+1]=BCH
⑶[SI]=00H,MEM=H
⑷[SI]=01H,ZF、CF、PF=0、0、0B
⑸AX=32FFH,CF、AF=0、1B
⑹AX=3109H,CF、AF=0、1B
⑺AL=A1H,CF、AF=1、0B
⑻AL=41H
⑼BX=000AH
﹙10﹚AX=0060H
﹙11﹚AX=FF60H
﹙12﹚AX=FFF0H,DX=0000H
3.6下列程序段执行后AX=?
设数据段有:
TABLEDW158,258,358,458
ENTRYDW3
代码段对DS初始化
MOVBX,OFFSETTABLE
MOVSI,ENTRY
MOVAX,[BX+SI]
3.6解答:
AX=6601H
3.7将AL中的8位二进制数按倒序方式重新排列,即AL原来为D7D6…D0,倒序后AL=D0D1…D7.
3.7参考答案
…
MOVCX,8
L:
SHLAL,1
RCRBL,1
LOOPL
MOVAL,BL
…
3.8若起始地址偏移量为2000H的内存单元存放有100个ASCII码字符,现给这些字符添加奇偶校验位(bit7),使每个字符中“1”的个数为偶数,在顺序输出到地址为100H的端口.
3.8解答
MOVSI,2000H
MOVCX,100
MOVDX,100H
NEXT2:
MOVAL,[SI];取字符串中字符送AL
ANDAL,0FFH;改变标志位
JPENEXT1;“1”的个数为偶,bit7不变
ORAL,80H;“1”的个数为奇,bit7变为1
NEXT1:
OUTDX,AL
INCSI
LOOPNEXT2
MOVAH,4CH
INT21H
3.9若SS=1652H,SP=2100H,AX=1234H,BX=5678H,FR=2115,试说明执行指令
PUSHAX
PUSHBX
PUSHF
POPCX
POP
之后,SP=?
SS=?
CX=?
DX=?
并画图指出堆栈中各单元的内容.
3.9解答:
SS=1652H
SP=20FEH
CX=2115H
DX=5678H
栈中各单元内容如下所示:
地址
RAM
20FAH
15
20FBH
21
20FCH
78
20FDH
56
20FEH
34
20FFH
12
2100H
XX
****补充题目:
不用移位指令识别AL中的每一位?
4.4.3循环程序设计
循环程序的结构分为单循环、双循环和多重循环3种。
三重以上的循环程序比较复杂。
从结构上讲,循环程序分为循环准备、循环体和循环控制3部分。
通常使用寄存器或者内存单元作为循环计数器。
从循环结构的程序实现上,通常分为WHILE-DO结构(当型循环)和DO-UNTIL(直到型循环)。
WHILE-DO结构的主要设计思想是,当循环控制条件满足时,执行循环体程序,否则退出循环。
DO-UNTIL结构的主要设计思想时,先执行循环体程序,再判断控制条件是否满足,若不满足则再次执行循环体程序,否则退出循环。
循环程序的结构如图6.5所示。
【例4.4.5】找最大数。
假设从BUF单元开始为一个ASCII码字符串,找出其中的最大数送屏幕显示。
程序框图如图6.6所示。
[解法1程序清单]
;FILENAME:
445_1.ASM
.486
DATASEGMENTUSE16
BUFDB′QWERTYUIOP123′
COUNTEQU﹩-BUF;统计串长度
MAXDB′MAX=′,?
0DH,0AH,′﹩′
DATAENDS
CODESEGMENTUSE16
ASSUMECS:
CODE,DS:
DATA
BEG:
MOVAX,DATA
MOVDS,AX
MOVAL,0;无符号最小数0→AL
LEABX,BUF;串首址偏移量→BX
MOVCX,COUNT;串长度→CX
LAST:
CMP[BX],AL;比较
JCNEXT
MOVAL,[BX];大数→AL
NEXT:
INCBX
LOOPLAST;循环计数
MOVMAX+4,AL;最大数→MAX+4单元
MOVAH,9
MOVDX,OFFSETMAX
INT21H;显示结果
MOVAH,4CH
INT21H;返回DOS
CODEENDS
ENDBEG
ASCII码字符应看作是无符号数,而无符号数的最小值为0,所以在第1次比较的时候,把0→AL寄存器。
各个数都和AL相比,每次比较都把较大的数放入AL寄存器中。
N个数需比较N次,如果把第一个数送AL作为初始化比较对象,那么N个数只需比较N-1次。
在循环程序中,循环计数控制着循环体的执行次数,通常使用寄存器或者内存单元作循环计数器,也可以使用“循环结束标志”来控制循环。
我们仍以找最大数为例,在下面的解法2程序中,在BUF单元字符串的末尾,额外地增设了一个FLAG单元,其中存放“-1”,它就是字符串的结束标志。
程序首先判断BX间地址的单元内容是否是-1,若是,表明在此之前的数都判断过了,可以结束循环了。
什么数可以作为循环结束标志呢?
不属于要比较的数据都可以作循环结束的标志。
采用循环结束标志来结束循环,可以不使用循环计数器,在多重循环的程序中可以省去一重循环计数。
[解法2程序清单]
;FOLENAME:
445_2.ASM
.486
DATASEGMENTUSE16
BUFDB′QWERTYUIOP123′
FLAGDB-1;设置串结束标志
MAXDB′MAX=′,?
,0DH,0AH,′﹩′
DATAENDS
CODESEGMENTUSE16
ASSUMECS:
CODE,DS:
DATA
BEG:
MOVAX,DATA
MOVDS,AX
MOVAL,0;无符号最小数0→AL
LEABX,BUF;串首址偏移量→BX
LAST:
CMPBYTEPTR[BX],-1;[BX]=串结束标志?
JEDISP;是,转
CMP[BX],AL
JCNEXT
MOVAL,[BX];大数→AL
NEXT:
INTBX
JMPLAST
DISP:
MOVMAX+4,AL;最大数→MAX+4单元
MOVAH,9
MOVDX,OFFSETMAX
INT21H;显示结果
MOVAH,4CH
INT21H;返回DOS
CODEENDS
ENDBEG
例8.2设8254端口地址为40H~43H,要求计数器2工作于方式1,按BCD码计数,计数初值为十进制数4000,写出初始化程序段。
分析:
已知初值是一个十进制数,所以采用BCD码计数方式比较方便。
注意:
如果按照BCD码方式计数,此时计数器初值寄存器写入的16位初值应该是16进制的4000H。
根据题意,计数器2的端口地址是42H,控制字寄存器端口地址是43H。
解法1:
由于初值低8位为0,控制字设置读写方式时可以设定为只写高8位,低8位自动置0,所以控制字为10100011B,即16进制数A3H。
MOVAL,0A3H
OUT43H,AL;写控制字
MOVAL,40H
OUT42H,AL;写初值为4000
解法2:
当然,也可以设定写入方式仍然按照先写低8位,再写高8位的方式,则控制字应为10110011B,即16进制数B3H。
程序段如下:
MOVAL,0B3H
OUT43H,AL
MOVAL,0;低8位为0
OUT42H,AL
MOVAL,40H
OUT42H,AL
解法3:
前面两种方式都是采用BCD码方式计数,实际上也可以采用二进制方式计数。
采用二进制方式计数,如果只写入8位初值是不可能的,因为4000D=0FA0H,所以必须采用先写低8位,再写高8位的方式,则控制字应为10110010B,即16进制数B2H。
程序段如下:
MOVAL,0B2H
OUT43H,AL
MOVAL,A0H
OUT42H,AL
MOVAL,0FH
OUT42H,AL
实际上,初值4000从十进制到16进制的转换不必手工进行,因为汇编源程序在汇编时会自动把各种进制数转换成二进制方式。
所以,上述代码可以修改如下:
MOVAL,0B2H
OUT43H,AL
MOVAX,4000
OUT42H,AL
MOVAL,AH
OUT42H,AL
需要说明,如果计数初值在十进制0~255之间,则可以只写低8位。
上题初值不在此范围内,所以需要高低8位分别写入。
另外需要注意的是,采用BCD码和二进制计数方式在写入计数器初值寄存器时数值是不一样的。
第11章
用8251A接口芯片来作为两台微机之间的串行通信的接口电路,通信双方数据格式的约定为字符长度8位、1位停止位、奇校验、波特率因子为16,要求将一台微机中的256字符传送到另一台微机中,试设计电路连接并画出连接简图,根据要求和你的设计写出其方式命令字并编写发送和接收程序。
解答:
甲机的发送程序如下:
DATASEGMENT
TBUFFDB256DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEABX,TBUFF
MOVCX,256
MOVDX,321H;初始化8251A
XORAL,AL
OUTDX,AL
OUTDX,AL
OUTDX,AL
MOVAL,40H
OUTDX,AL
MOVAL,01011110B
OUTDX,AL
MOVAL,00110011B
OUTDX,AL
LOOP1:
MOVDX,321H;测试是否可发送
INAL,DX
TESTAL,1
JZLOOP1;不可,继续测试
MOVDX,320H;发送一个字符
MOVAL,[BX]
OUTDX,AL
INCBX
DECCX;是否发送完?
JNZLOOP1;未发完,继续
MOVAH,4CH;已发完,退出
INT21H
CODEENDS
ENDSTART
乙机的接收程序如下:
DATASEGMENT
RBUFFDB256DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEABX,RBUFF
MOVCX,256
MOVDX,321H;初始化8251A
XORAL,AL
OUTDX,AL
OUTDX,AL
OUTDX,AL
MOVAL,40H
OUTDX,AL
MOVAL,01011110B
OUTDX,AL
MOVAL,00010110B
OUTDX,AL
LOOP1:
MOVDX,321H;测试是否已接收好
INAL,DX
TESTAL,2
JZLOOP1;未接收,继续测试
MOVDX,320H;读出接收的字符,存入缓冲区
INAL,DX
MOV[BX],AL
INCBX
DECCX;是否接收完?
JNZLOOP1;未完,继续
MOVAH,4CH;已收完,退出
INT21H
CODEENDS
ENDSTART
出师表
两汉:
诸葛亮
先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。
然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。
诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。
宫中府中,俱为一体;陟罚臧否,不宜异同。
若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;不宜偏私,使内外异法也。
侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:
愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。
将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰“能”,是以众议举宠为督:
愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。
亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。
先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。
侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也
。
臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。
先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。
后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。
先帝知臣谨慎,故临崩寄臣以大事也。
受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。
今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。
此臣所以报先帝而忠陛下之职分也。
至于斟酌损益,进尽忠言,则攸之、祎、允之任也。
愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。
若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。
臣不胜受恩感激。
今当远离,临表涕零,不知所言。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 复习题