杭电微机原理第三章【习题】

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

这些指令对CF,OF影响不大,主要是ZF,SF和PF
2020年3月31日星期二
10
*11. 假设数据段定义如下: DATA SEGMENT STRING DB ‘The personal computer & TV’ DATA ENDS
试用字符串操作等指令编程完成以下功能:
【答】 DATA SEGMENT STRING DB ‘The personal computer & TV’
AX(低位)和DX(高位)中; (8)DIV CL ; 无符号数除法运算,将寄存器AX的内容除以寄存器CL中的内容,
商存放在AL中,余数存放在AH中。
2020年3月31日星期二
8
15
标志寄存器 PSW
① CF (Carrv Flag):进位标志位
最高位有进位或借位时,CF=1。
11 10 9 8
76 54
(1)MOV AX, (2)MOV AX, (3)MOV AX, (4)MOV AX, (5)MOV AX, (6)MOV AX, (7)MOV AX, (8)MOV AX, (9)MOV AX, (10)MOV AX,
[100H] VAL [BX] ES:[BX] [SI] [BX+10H] [BP] VAL[BP][SI] VAL[BX][DI] [BP]IF TF SF ZF AF PF CF
②PF (Parity Flag):奇偶校验标志位
本次运算结果中有偶数个“1”时,PF=1; 有奇数个“1”时,PF =0。
③ AF(Auxiliary Flag):辅助进位标志位
低4位向高4位进位或借位时,AF=1。
④ ZF(Zero Flag):全零标志位
SP
AX=4860H BX=1287H
5)执行POP AX之后
2020年3月31日星期二
7
9.下列指令完成什么功能?
(1)ADD AL, DH ; 加法运算,将寄存器AL和DH内容相加后的结果存入AL 中;
(2)ADC BX, CX ; 带进位加法运算,将寄存器BX和CX以及进位位CF内容相加后 的结果存入BX中;
12
12
1050:00FE 60
1050:00FE 60 SP
48
48
1050: 0100
1050: 0100
AX=4860H BX=1287H
AX=4860H BX=1287H
3) 执行PUSH BX之后 4)执行POP BX之后
1050:00FC 87
12
1050:00FE 60
48
1050: 0100
3
6. 指出下列指令中那些是错误的,错在什么地方?
(1)MOV DL, AX 错,寄存器寻址方式中,目的操作数与源操作数长度必须一致
(2)MOV 8650H, AX 错,目的操作数不可以是立即数
(3)MOV DS, 0300H 错,MOV指令不允许将立即数传入段寄存器
(4)MOV [BX], [1200H] 错, MOV指令的两个操作数不能同时为存储器
(12)ROR DX, CL
AH=04H,CF=0; BL=36H,CF=0; AX=DAF7H,CF无影响; CX=FFF4H,CF=0; TEST操作并不修改结果,CF=0; CMP操作并不修改结果,CF=0; DX=0186H,CF=0; AL=04H,CF=0; BH=F0H,CF=0; AX=4A10H,CF=0; 若程序执行之前CF=0,BX=1E6CH,CF=0; 若程序执行之前CF=1,BX=1E6DH,CF=0。 DX=4186H,CF=0。
DATA ENDS
EDATA SEGMENT
GET_CHAR DB 26DUP(?)
NEW_STR DB ‘The computer’
CAPS
DB 10DUP(?)
CHART
DB 26DUP(?)
EDATA ENDS
2020年3月31日星期二
11
(1)把该字符串传送到附加段偏移量为GET_CHAR开始的内存单元中。
(3)SUB AX , 2710H ; 减法运算,将寄存器AX的内容减去立即数2710H后的结果 存放到AX中;
(4)DEC BX ; 减1运算,将寄存器BX内容减1后的结果存入BX中; (5)NEG CX ; 取负运算,将寄存器CX内容取负后的结果存入CX中; (6)INC BL ; 加1运算,将寄存器BL内容加1后的结果存入BL中; (7)MUL BX ; 无符号数乘法运算,将寄存器AX和BX的内容相乘后的结果存放到
(例3-75)
MOV SI, OFFSET STRING
MOV DI, OFFSET GET_CHAR
MOV CX, CLD
001AH
; 共26个字节,包括空格 ; 清地址标记位,地址增量
REP MOVSB
;重复传输各字节,直到CX=0
HLT
2020年3月31日星期二
12
(2)(例3-76)比较该字符串是否与“The computer”相同,若相同则将
2020年3月31日星期二
5
8.已知当前SS=1050H,SP=0100H,AX=4860H,BX=1287H,试用 示意图表示执行下列指令过程中,堆栈中内容和堆栈指针SP是怎样 变化的。
PUSU AX PUSH BX POP BX POP AX
1050: 0000
1050: 0000
1050: 0100
(12)XCHG AL, 50H 错,交换指令可以在寄存器之间,寄存器和存储器之间进行,不可以是 立即数
(13)IN BL, 05H 错, BL不能作为IN指令的目的操作数,只能用AL和AX
(14) OUT AL, 0FFEH 错,端口地址0FFEH>FFH, 应用DX间接寻址, 同时源操作数和目标操作 数的位置颠倒了,应改为OUT DX, AL。
AL寄存器的内容置1,否则置0。并要求将比较次数送到BL寄存器中。 MOV SI, OFFSET STRING MOV DI, OFFSET NEW_STR MOV CX, 001AH CLD REPZ CMPSB ;DS:SI-ES:DI内容相同,则重复
JNE CLR_AL ;不同则转 MOV AL, 1 JMP SET_BL CLR_AL: MOV AL, 0 SET_BL: MOV BL, 001AH SUB BL, CL HLT
直接寻址方式,10100H 直接寻址方式,10030H 寄存器间接寻址,10100H 寄存器间接寻址,20100H 寄存器间接寻址,100A0H 寄存器相对寻址,10110H 寄存器间接寻址,35200H
相对基址变址寻址,352D0H 相对基址变址寻址,10154H 基址变址寻址,35224H
2020年3月31日星期二
2020年3月31日星期二
13
(3) (例3-77)检查该字符串是否有“&”符,若有则用空格将其替换。
L1: NEXT: FIND:
MOV DI, MOV CX, MOV AL, CLD SCASB JZ FIND LOOP L1 HLT MOV BL,‘ ’ MOV [DI-1], JMP NEXT
AX=0200H
10200H 10
(2)MOV AX, [200H]
2A
物理地址=1000H×10H+200H=10200H, AX=2A10H
3C
(3)MOV AX, BX; (4)MOV AX , 3[BX];
46
AX=0200H
59 6B
物理地址=1000H×10H +0200H + 3H=10203H, AX=5946H
《微机原理与接口技术》习题
第三章 作业习题及答案
杭州电子科技大学自动化学院
2. 已知DS=1000H, BX=0200H, SI=0002H,内存 10200H~10205H单元的内容分别为10H,2AH,3CH,46H,59H, 6BH。下列每条指令执行完后AX寄存器的内容是什么?
(1)MOV AX, 0200H;
2020年3月31日星期二
9
10.已知AX=2508H,BX=0F36H,CX=0004H,DX=1864H,试求下列每条指令执
行后的结果是什么?标记位等于什么?
(1)AND AH, CL (2)OR BL, 30H (3)NOT AX (4)XOR CX, 0FFF0H (5)TEST DH, 0FH (6)CMP CX, 00H (7)SHR DX, CL (8)SAR AL, 1 (9)SHL BH, CL (10)SAL AX, 1 (11)RCL BX, 1
(5)MOV AX , [BX+SI] 物理地址=1000H×10H +0200H +2H=10202H , AX=463CH
(6)MOV AX, 2[BX+SI] 物理地址=1000H×10H +0200H+0002+2H=10204H , AX=6B59H
2020年3月31日星期二
2
3. 设DS=1000H, ES=2000H,SS=3500H,SI=00A0H,DI=0024H, BX=0100H, BP=0200H,数据段变量名为VAL的偏移地址值为0030H,试说明下列原操 作数字段的寻址方式是什么?物理地址值是什么?
本次运算结果为0时,ZF=1,否则ZF =0。
⑤ SF(Sign Flag):符号标志位
本次运算结果的最高位为1时,SF=1,否则SF=0。即反映了本次运算结果是正还是负。
⑥ OF(Overflow Flag):溢出标志位
本次运算过程中产生溢出时,OF =1 。对带符号数,字节运算结果的范围为128~+127,字运算结果的范围为-32768~+32767,超过此范围为溢出。
SP
AX=4860H BX=1287H
1) 执行PUSH AX之前
1050: 00FE 60
SP
48
1050: 0100
AX=4860H
BX=1287H
2)执行PUSH AX之后
2020年3月31日星期二
6
1050:0000
1050:0000
1050:0000
1050:00FC 87 SP 1050:00FC 87
JB
OTHER
;若AL中字母<‘A’
CMP AL, ‘Z’
JA
OTHER
; 若AL中字母>‘Z’
STOSB
;存大写字符
JMP L2
OTHER: XCHG BX, DI
; 存其它字符
STOSB
XCHG BX,
DI
L2: LOOP L1
HLT
2020年3月31日星期二
15
*13.设CS=1200H,IP=0100H,SS=5000H,SP=0400H,DS=2000H, SI=3000H,BX=0300H,(20300)=4800,(20302)=00FFH, TABLE=0500H,PROG_N标号的地址为1200:0278H, PROG_F标号 的地址为3400:0ABCH。说明下列每条指令执行完后,程序将分别移到 何处执行? 若将上述指令中的操作码JMP该为CALL,则每条指令执行完后,程序将分 别移到何处执行?并请画图说明堆栈中的内容和堆栈指针如何变化。
OFFSET STRING 001AH ‘&’
;AL-ES:DI ;若题目要求找到后不用再找了,则可用 ;REPNE SCASB,就可以不用LOOP L1
BL
; 用空格替换&
2020年3月31日星期二
14
(4)(例3-78) 把字符串大写字母传送到附加段中以CAPS开始的单元中,其余字
符传送到以CHART开始的单元中。然后将数据段中存储上述字符串的单元清0。
(5)MOV IP, 0FFH 错, IP不能作为MOV指令的目的操作数
(6)MOV [BX+SI+3], IP 错, IP不能作为MOV指令的源操作数
(7)MOV AX, [BX][BP] 错,BX与BP使用的段寄存器不同,不可以同时出现在源操作数当中
(8)MOV AL, ES:[BP] 对
2020年3月31日星期二
4
(9)MOV DL, [SI][DI] 错,SI与DI是两个变址寄存器,不可以同时出现在源操作数中
(10)MOV AX, OFFSET 0A20H 错,OFFSET后面跟的应该是符号地址,再把符号地址的值作为操作数
(11)MOV AL, OFFSET TABLE 错,TABLE的偏移地址是16位,目的与源长度不一致
MOV SI,
OFFSET STRING
;数据段,源串
MOV DI,
OFFSET CAPS
;附加段,大写字符
MOV BX, OFFSET CHART
;附加段,其它字符
MOV CX, 001AH
CLD
L1: LODSB
;AL←DS:SI
MOV [SI-1], 00H
; 取出字符后该单元清零
CMP AL, ‘A’
相关文档
最新文档