微机原理与接口技术作业答案
更新时间:2024-05-07 09:29:01 阅读量: 综合文库 文档下载
第二章 微处理器及其结构
2-7 什么是逻辑地址? 什么是物理地址? 在实地址方式下,如何求存储器的物理地址? 设一个16字的数据区,它的起始地址为70A0H:DDF6(段基址:偏移地址).写出这个数据区的首字单元和末字单元的物理地址.
解:
1). 实模式下,逻辑地址由段基址和偏移地址组成.物理地址是真正的存储单元的地址.
2). 物理地址=段基址*16 + 偏移地址 3). 首字单元地址:
70A0H*16 +DDF6H = 70A00H + DDF6H = 7E7F6H 末字单元地址:
7E7F6H + (16-1)*2 = 7E7F6H + 1EH = 7E814H 注意:
相邻两个存储单元可构成一个字长为16位的字,在对准字时,用偶地址表示字的地址.
123456789101112131415160H2H4H6H8HAHCHEH10H12H14H16H18H1AH1CH1EH20H
第三章 指令系统
3-6 分别指出下列指令中源操作数和目标操作数的寻址方式. 若是存储器寻址,用表达式表示EA=? (1)AND AX, 00FFH (6)MOV AX, [BX+DI+20H] (2)ADD BX, [00FFH] (7)CMP [SI], AX (3)MOV AX, [BX+10H] (8)OR AX, DX (4)ADD AX, [ESI*8] (9)MOV EAX, [ESI][EDI*2] (5)SUB [BP][SI], AX (10)PUSH DS 解:
(1)立即数寻址
(2)直接寻址 EA=00FFH (3)基址寻址 EA=(BX)+10 (4)比例间址 EA=ESI*8
(5)基址加间址寻址 EA=(BP)+(SI)
(6)带位移的基址加间址寻址 EA=(BX)+(DI)+20H (7)间址寻址 EA=(SI) (8)寄存器寻址
(9)基址加比例间址寻址 EA=(ESI)+(EDI)*2 (10)寄存器寻址
注意: ◆ 16位寻址: BX和BP作为基址寄存器.BX以DS作为默认段寄存器,BP
以SS为默认段寄存器.
SI和DI作为间址寄存器. 默认DS为段寄存器
◆ 32位寻址: 8个32位通用寄存器均可作为基址寄存器,其中ESP,EBP
以SS为默认段寄存器,其余均以DS为默认段寄存器.
除ESP外的其它7个寄存器均可作间址寄存器,EBP默认SS
作段基址寄存器,其它以DS作段基址寄存器
3-7 32位微机工作在实地址模式下, 已知(DS) = 1000和(SS) = 2000H, (SI) = 007FH, (BX) = 0040H, (BP) = 0016H, 变量TABLE的偏移地址为0100H. 指出下列指令中源操作数的寻址方式,求它的有效地址(EA)和物理地址(PA).
(1)MOV AX, [1234H] (2)MOV AX, TABLE (3)MOV AX, [BX+100H] (4)MOV AX, TABLE[BP][SI] 解:
(1)直接寻址
EA=1234H PA=(DS)*16 + EA = 11234H (2)直接寻址
EA=(TABLE)=0100H PA=(DS)*16+EA=10100H (3)基址寻址
EA=(BX)+100H=0140H PA=(DS)*16+EA=10140H (4)带位移的基址加间址寻址
EA=(BP)+(SI)+TABLE=0195H PA=(SS)*16+EA=20195H
注意: 当基址寄存器和间址寄存器默认的段寄存器不同时,一般规定,由基址寄存器来决定默认的段寄存器为段基址寄存器. 这里BP为基址寄存器,所以默认SS为段基址寄存器.
3-8 指出下列指令的错误,并加以改正. (1)MOV DS, 100 (7)JMP BX (2)MOV 1020H, DX (8)SHR DX, 4 (3)SUB [1000H], [SI] (9)OUT 380H, AX (4)PUSH AL (10)ADD AL, BX (5)IN AL, [80H] (11)POP CS (6)MOV DS, ES (12)MOV CL, 3300H 解:
(1)立即数不能直接传送到段寄存器中去 应改为: MOV AX, 100 MOV DS, AX
(2)立即数只能出现在源操作数位置 应改为: MOV DX,1020H
(3)源操作数和目标操作数不能同时为寄存器寻址 应改为: MOV AX, [1000H] SUB AX, [SI]
(4)PUSH指令不能操作8位数据 应改为: PUSH AX
(5)[80H ]不是端口 IN AL ,80H 应改为: IN AL, 80H
(6)两个段寄存器之间不能直接传送 应改为: MOV AX, ES
MOV DS,AX (7)对
(8)移位次数超过1的时候,要把移位次数放入CL中 应改为: MOV CL, 4 SHR DX, CL
(9)端口地址大于255时,要把地址放入DX中 应改为: MOV DX, 380H OUT DX, AX
(10)源操作数和目标操作数不匹配 应改为: ADD AX, BX
(11)POP指令只能使用在存储器或通用寄存器 可改为: POP AX
(12)源操作数和目标操作数不匹配 应改为: MOV CX, 3300H
3-9 已知: (DS) = 091DH, (SS) = 1E4AH, (AX) = 1234H, (BX) = 0024H, (CX) = 5678H, (BP) = 0024H, (SI) = 0012H, (DI) = 0032H, [09226H] = 00F6H, [09228H] = 1E40H, [1E4F6H] = 091DH. 试求下列各指令单独执行后的结果.
(1)MOV CL, 20H[BX][SI] ; (CL) = ? (2)MOV [BP][DI], CX ; [IE4F6H] = ? (3)LEA BX, 20H[BX][SI] : (BX) = ? MOV AX, 2[BX] : (AX) = ? (4)LDS SI, [BX][DI]
MOV [SI], BX ; (SI]) = ? (5)XCHG CX, 32H[BX] ; (AX) = ? XCHG 20[BX][SI], AX ; [09226H] = ? 解:
(1)(CL) = 00F6H (4)(SI)= 0024H (2)[IE4F6H] = 5678H (5)(AX) = 5678H (3)(BX) = 0056H [09226H] = 1234H
(AX) = 1E40H
3-10 已知 (AL) = 0C4H, DATA单元中内容为5AH, 写出下列每条指令单独执行后的结果 (ODITSZAPC:0---xxux0)
(1)AND AL, DATA (5)AND AL, 0FH (2)OR AL, DATA (6)OR AL, 1H (3)XOR AL, DATA (7) XOR AL, 0FFH (4)NOT DATA (8) TEST AL, 80H 解:
(1)(AL) = 40H CF=0,OF=0,SF=0,ZF=0,PF=0,AF无定义 (2)(AL) = DEH CF=0,OF=0,SF=1,ZF=0,PF=1,AF无定义 (3)(AL) = 9EH CF=0,OF=0,SF=1,ZF=0,PF=0,AF无定义 (4)(AL) = A5H 不影响任何标志位
(5)(AL) = 04H CF=0,OF=0,SF=0,ZF=0,PF=0,AF无定义 (6)(AL) = C5H CF=0,OF=0,SF=1,ZF=0,PF=1,AF无定义
(7)(AL) = 3BH CF=0,OF=0,SF=0,ZF=0,PF=0,AF无定义 (8)(AL)不变=0C4H CF=0,OF=0,SF=1,ZF=0,PF=0,AF无定义
3-12 (AL)=8EH,(BL)=72H,执行以下指令后,标志位OF、SF、ZF、AF、PF和CF的值是什么? (1)ADD AL,BL (3)CMP AL,BL (2)AND BL,AL (4)SHL AL,1 解:
(1) OF=0,SF=0,ZF=1,AF=1,PF=1,CF=1
(2) OF=0,SF=0,ZF=0,AF=(未定义),PF=0,CF=0 (3) OF=1,SF=0,ZF=0,AF=0,PF=0,CF=0
(4) OF=1,SF=0,ZF=0,AF=(未定义),PF=0,CF=1
3-15 试用CMP指令和无条件指令实现以下判断
(1)AX和CX中的内容均为无符号数
①(AX)>(CX)则转至BIGGER标号执行
②(AX)<(CX)则转至LESS标号执行
(2)BX和DX中的内容均为有符号数
①(BX)>(DX)则转至BIGGER标号执行
②(BX)<(DX)则转至LESS标号执行
解:
(1) CMP AX,CX (2) CMP BX,DX
JA BIGGER JG BIGGER JB LESS JL LESS
第四章 汇编语言程序设计
4-9 试用伪指令编写一数据段与下面程序等效。 MOV AX, 0913H MOV DS, AX MOV BX, 20H MOV [BX], ‘AB’
DATA SEGMENT AT 0931H ORG 20H DATA1 DW ?
(或 DATA1 DW 'AB') DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX
MOV DATA1,'AB' CODE ENDS
4-10 下面各题有语法错误,分别用两种办法修改,使其正确。 (1) M1 DW 5060H … MOV BL, M1 改:
M1 DB 60H, 50H …
MOV BL,M1
M1 DW 5060H …
MOV BL, BYTE PTR M1
MOV BX, M1
M2 LABEL BYTE M1 DW 5060H …
MOV BL,M2
(2) M2 EQU 10H … MOV M2,AL
改:DATA SEGMENT ORG 10H M2 DB ?
DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA MOV DS,AX MOV M2,AL
CODE ENDS END START
MOV SI,10H MOV [SI], AL
MOV DS:[0010H],AL
(3) M3 DW ‘ABCD’
改:M3 DW 'AB','CD' M3 DB 'ABCD'
(4) M4 DB 1234
改:M4 DB '1234' M4 DW 1234
(5) DATA1 SEGMENT DA1 DW 1234H DATA1 ENDS
DATA2 SEGMENT DA2 DW 5678H DATA2 ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA1 … MOV BX, DA2 …
CODE ENDS
ASSUME CS: CODE, DS: DATA2
ASSUME CS:CODE, DS: DATA1 …
ASSUME DS: NOTHING ASSUME DS: DATA2
ASSUME CD:CODE, DS: DATA1, ES: DATA2 MOV AX, DATA2 MOV ES, AX …
MOV BX,DA2
4-12 按照下面要求写出程序的框架
(1)数据段的位置从8000H开始,数据段中定义一个有100个字节的数组。 (2)堆栈段名为STACK1,留100个字的空间。
(3)代码段指定段寄存器,主程序从1000H开始,给有关段寄存器赋值。
DATA SEGMENT AT 800H M1 DB 100 DUP (?) DATA ENDS
STACK1 SEGMENT STACK
DW 100 DUP (?) STACK1 ENDS
CODE SEGMENT AT 100H
ASSUME CS:CODE,DS:DATA, SS: STACK1 START: MOV AX,DATA MOV DS,AX
CODE ENDS END START
4-15 将MBUF为起始单元的5个数按相反次序传到NBUF单元开始的存储单元之中.
DATA SEGMENT
MBUF DW 1,2,3,4,5 NBUF DW 5 DUP(?) M EQU 10H DATA ENDS
STACK1 SEGMENT PARA STACK DB 100 DUP(0) STACK1 ENDS CODE SEGMENT
ASSUME CS:CODE, DS:DATA,SS:STACK1 START: MOV AX, DATA MOV DS, AX
MOV SI, OFFSET MBUF MOV DI, OFFSET NBUF MOV CX, 5 ADD SI, 8
LOP: MOV AX, [SI] MOV [DI],AX DEC SI DEC SI INC DI INC DI DEC CX JNZ LOP
MOV AH, 4CH INT 21H CODE ENDS
END START
4-16 试编写程序,完成下列数字表达式的功能
?1(X??1)?Y??0(?1?X?1)
??1(X???1)?解:
DATA SEGMENT
XX DB X Y DB ? DATA ENDS
STACK1 SEGMENT PARA STACK DB 100 DUP(0) STACK1 ENDS CODE SEGMENT
ASSUME CS:CODE, DS:DATA,SS:STACK1 START: MOV AX, DATA MOV DS, AX MOV AL, XX CMP AL, -1 JG BIGR MOV AL, -1 JMP JUST2 BIGR: CMP AL, 1 JGE JUST1 MOV AL, 0 JMP JUST2 JUST1: MOV AL, 1 JUST2: MOV Y, AL MOV AH, 4CH INT 21H CODE ENDS
END START
4-17 将内存中某数据块中的正数和负数分开,并分别将这些正数和负数送同一
数据段的两个缓冲区中,并在屏幕上显示正数和负数的个数. DATA SEGMENT
D1 DB -1, -2, 1, 2, 3, -4, 4,5,-5,0,0,9,-3 COUNT EQU $-D1
D2 DB 100 DUP(?) D3 DB 100 DUP(?) PNUM DW 1 DUP(?) NNUM DW 1 DUP(?)
CONST DW 10000,1000,100,10,1 DECS DB 5 DUP(0)
HEAD1 DB 'THE NUMBER OF POSITIVE NUMBER IS:$'
HEAD2 DB 'THE NUMBER OF NEGATIVE NUMBER IS:$' DATA ENDS
STACK1 SEGMENT PARA STACK DB 100 DUP(0) STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA,SS:STACK1 START: MOV AX, DATA MOV DS, AX
MOV BX, OFFSET D1 MOV SI, OFFSET D2 MOV DI, OFFSET D3 MOV CX, COUNT LOP: MOV AL, [BX] CMP AL, 0 JGE JUST1 MOV [DI], AL INC DI INC NNUM JMP JUST2 JUST1: JE JUST2 MOV [SI], AL INC SI INC PNUM JUST2: INC BX DEC CX JNZ LOP
MOV AH,9H
MOV DX,OFFSET HEAD1 INT 21H
MOV AX,PNUM
MOV DL,0AH MOV AH,02H INT 21H
MOV DL,0DH MOV AH,02H INT 21H
MOV AH,9H
MOV DX,OFFSET HEAD2 INT 21H
MOV AX,NNUM CALL DISPLAY
MOV DL,0AH MOV AH,02H INT 21H
MOV DL,0DH MOV AH,02H INT 21H
MOV AH, 4CH INT 21H
DISPLAY PROC NEAR MOV CX,5 LEA SI,CONST LEA DI,DECS CONV3: MOV BL,0 LOP1: SUB AX,[SI] JC NEXT INC BL JMP LOP1 NEXT: ADD AX,[SI] OR BL,30H MOV [DI],BL INC SI INC SI INC DI
LOOP CONV3 MOV AH,02H MOV CX,5 LEA DI,DECS CONV4: MOV DL,[DI]
CMP DL,30H JZ NODIS JMP DISP NODIS: INC DI
LOOP CONV4 DISP: INT 21H CMP CX,0 JZ QUIT
INC DI
MOV DL,[DI] LOOP DISP QUIT: RET DISPLAY ENDP
CODE ENDS
END START
4-19 内存BLOCK开始,存放着256个字节的带符号数.编写程序,从这些数中找
出绝对值最大的数,将其放入MAX中. 解:
DATA SEGMENT
BLOCK DB -1, -3, 2, 5, -4, -7, -8,9,10,-124 COUNT EQU $-BLOCK MAX DB ? MAX1 DB ?
DATA ENDS
STACK1 SEGMENT PARA STACK DB 100 DUP(0) STACK1 ENDS CODE SEGMENT
ASSUME CS:CODE, DS:DATA,SS:STACK1 START: MOV AX, DATA MOV DS, AX
MOV SI, OFFSET BLOCK MOV CX, COUNT MOV BL,[SI] CMP BL, 0 JL ABS1 JMP CON1 ABS1: NEG BL CON1: DEC CX LOP: INC SI MOV AL,[SI] CMP AL, 0 JL ABS2 JMP CON2 ABS2: NEG AL
CON2: CMP BL, AL JAE JUST1 XCHG BL, AL MOV DI,SI
JUST1: DEC CX JNZ LOP MOV BH,[DI] MOV MAX,BH MOV MAX1, BL MOV AH, 4CH INT 21H CODE ENDS
END START
第五章
存储器
5-7 若用1024*1b的RAM芯片组成16K*8b的存储器,,需要多少芯片?在地址线中有多少位参与片内寻址?多少位用做芯片组选择信号? 解:
先进行位扩展,一组芯片需要8片 再进行字扩展,需要16组芯片. 所以共需要16*8=128片
1024=1K,需要10位参与片内寻址 16=24,需要4位做选择信号.
5-8 试用4K*8b的EPROM2732和8K*8b的SRAM6264,以及74LS138译码器,构成一个8KB的ROM,32KB的RAM存储系统,要求设计存储器扩展电路,并指出每片存储芯片的地址范围. 解:
芯片1#2#3#4#5#6#型号273227326264626462646264片选译码A15~A13000000001010011100 片内译码A1201A11~A000?0~11?100?0~11?1地址范围0000H~0FFFH1000H~1FFFH2000H~3FFFH4000H~5FFFH6000H~7FFFH8000H~9FFFH
5-9 用EPROM2764(8K*8b)和SRAM6264(8k*8b)各一片组成存储器,其地址范围为FC000~FFFFFH,试画出存储器与CPU的连接图和片选信号译码电路(CPU地址线20位,数据线8位)。 1111 1100 0000 0000 0000 1111 1101 1111 1111 1111 1111 1110 0000 0000 0000 1111 1111 1111 1111 1111
5-10 现有存储芯片:2K*1b的ROM和4K*1bde RAM,若用它们组成容量为16KB的存储器,前4KB为ROM,后12KB为RAM,问各种存储芯片分别用多少片? 解:
4KB=4K*8b 需要2*8=16片 12KB=12K*8b 需要3*8=24片
第六章 中断技术
6-18 某系统使用一片8259A管理中断,中断请求由IR2引入,采用电平触发、完全嵌套、普通EOI结束方式,中断类型号为42H,端口地址为80H和81H,试画出8259A与CPU的硬件连接图,并编写初始化程序。 解:
电路图参见教材P178图6-19,CS由A19-A1=0000 0000 0000 1000 000和M/IO给出低电平。
MOV AL, 1BH(00011011B)
OUT 80H, AL ;设置ICW1 MOV AL, 40H(01000000B)
OUT 81H, AL :设置ICW2 MOV AL, 01H(00000001B)
OUT 81H, AL :设置ICW4 MOV AL, FBH(11111011B)
OUT 81H, AL ; 设置OCW1
6-19 某系统使用两片8259A管理中断,从片的INT连接到主片的IR2请求输入端。设主片工作于边沿触发、特殊完全嵌套、非自动结束和非缓冲方式,中断类型号为70H,端口地址为80H和81H;从片工作与边沿触发、完全嵌套、非自动结束和非缓冲方式,中断类型号为40H,端口地址为20H和21H。要求: (1)画出主、从片级联图
(2)编写主、从片初始化程序 解:
电路图参见教材P179图6-21,主片CS由A19-A1=0000 0000 0000 1000 000和M/IO给出低电平,从片CS由A19-A1=0000 0000 0000 0010 000和M/IO给出低电平。
主片8259A
MOV AL,11H(00010001B) OUT 80H, AL ;定义ICW1 MOV AL, 70H(01110000B) OUT 81H, AL ;定义ICW2
MOV AL, 04H(00000100B) OUT 81H, AL ;定义ICW3 MOV AL, 11H(00010001B) OUT 81H, AL ;定义ICW4 MOV AL, FBH(11111011B) OUT 81H, AL ;定义OCW1
(开放从片IR2的请求) IN AL, 81H
AND AL, 11111011 OUT 81H, AL
从片8259A
MOV AL,11H(00010001B) OUT 20H, AL ;定义ICW1 MOV AL, 40H(01000000B) OUT 21H, AL ;定义ICW2 MOV AL, 02H(00000010B) OUT 21H, AL ;定义ICW3 MOV AL, 01H(00000001B) OUT 21H, AL ;定义ICW4
6-20 某系统由8259A的IR2引入外设中断请求(跳变信号有效),要求当CPU响应IR2请求时,输出显示字符串“****”,并中断10次退出,试编写主程序和中断服务程序。 解:
设8259A的I/O地址为20H,21H,中断类型号0AH,从IR2引入 DATA SEGMENT
MESS DB '*****',OAH,ODH,'$' INTA00 EQU 0020H INTA01 EQU 0021H DATA ENDS
STACK SEGMENT STACK DB 100H DUP (?) STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK MAIN:MOV AX,DATA
MOV DS,AX
MOV DX,INTA00 ;8259A初始化 MOV AL,13H ;写ICW1 OUT DX,AL
MOV DX,INTA01
MOV AL,08H ;写ICW2 OUT DX,AL
MOV AL,01H ;写ICW4 OUT DX,AL PUSH DS
MOV AX,SEG INT-P ;设置中断矢量 MOV DS,AX
MOV DX,OFFSET INT-P MOV AL,0AH MOV AH,25H INT 21H POP DS
MOV AL,0FBH ;写中断屏蔽字OCW1 OUT DX,AL
MOV DX,INTA00
MOV AL,20H ;写中断结束方式OCW2 OUT DX,AL MOV BX,10
WAIT1: STI ;开中断 JMP WAIT1 ;等待中断
INT-P:MOV AX,DATA ;中断服务程序入口 MOV DS,AX
MOV DX,OFFSET MESS ;输出指定字符串 MOV AH,09H INT 21H
MOV DX,INTA00 ;写OCW2,送中断结束命令EOI MOV AL,20H OUT DX,AL
DEC BX ;控制10次循环 JNZ NEXT
MOV DX,INTA01 ;读屏蔽寄存器IMR IN AL,DX
OR AL,04H ;屏蔽IR2请求 OUT DX,AL
STI ;开中断
MOV AX,4C00H ;返回操作系统 INT 21H
NEXT: IRET ;中断返回
正在阅读:
微机原理与接口技术作业答案05-07
电影词汇总结大全(中英文对照)10-01
生日请柬怎么写02-20
文明施工现场措施及安全保证措施01-01
VB程序题12-25
2013高考数学资料:2008-2012年5年高考数学试题分类汇编与解析0504-21
寒假里的一件事250字02-14
读书会策划书08-22
通用版高考语文一轮复习专题十七微写作课时达标39微写作-含答案01-15
《中药药剂学》1-11章结习题01-20
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 微机
- 接口
- 原理
- 作业
- 答案
- 技术