第三章习题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1) MOV SI, 200
;立即寻址
(2) MOV AL, [2000H]
;直接寻址
(3) MOV CX, DATA[SI] ; 寄存器相对寻址
(4) ADD AX, [BX+DI]
;基址变址寻址
(5) AND AX, BX
;寄存器寻址
(6) MOV [SI], AX
;寄存器寻址
(7) MOV AX, DATA[BP+SI] ;相对基址变址寻址
(1) OUT DX, AL ;(PORT)=(80H)=40H
(2) OUT DX, AX
;(PORT)=(80H)=40H,(PORT+1)=20H
(3) IN AL, PORT
;AL=1FH
(4) IN AX, 80H
; AX=451FH
6
3.9 假设下列程序执行前SS=8000H,SP=2000H , AX=7A6CH,DX=3158H.执行下列程序段,画 出每条指令执行后,寄存器AX,BX,CX,DX 的内容和堆栈存储的内容的变化情况,执行完 毕后,SP=? (1) PUSH AX ;AX=7A6CH, SP=1FFEH,(SP)=7A6CH (2) PUSH DX ;DX=3158H,SP=1FFCH,(SP)=3158H (3) POP BX ;BX=3158H,SP=1FFEH,(SP)=7A6CH (4) POP CX ; CX=7A6CH,SP=2000H
1
3.2 什么叫寻址方式?8086指令系统有哪几 种寻址方式?
寻址方式—说明指令中如何提供操作数 或提供操作数存放地址的方法
8086指令系统的寻址方式:立即寻址、 寄存器寻址、存储器寻址(直接寻址、 寄存器间接寻址、寄存器相对寻址、基 址变址寻址、相对基址变址寻址)、I/O 端口寻址
2
3.3 指出下列指令中源操作数的寻址方式:
18
3.28 已知数据段DATA从存储器实际地址02000H开始, 作如下定义:
DATA SEGMENT VAR1 DB VAR2 DW VAR3 DB
2 DUP(0,1,?) 50 DUP(?) 10 DUP(0,1,2 DUP(4),5)
DATA ENDS
求出三个变量SEG、OFFSET、TYPE、LENGTH和SIZE 的属性值。
8
3.11 写出三种不同类型的指令将寄存器BX清零。
(1) MOV (2) XOR (3) AND
BX, 0 BX, BX BX, 0
9
3.12 已知从DS:2200H,ES:3200H单元起分别存放20个ASCII的字符。 找出这两个字符串中第一个不同字符的位置(段内偏移地址),并放入DS: 22A0H开始的连续两个单元中。请设计完成此任务的程序段。
12
3.16 读程序: NEXT:MOV AL, [SI]
MOV ES:[DI], AL INC SI INC DI LOOP NEXT 请用串指令完成上述功能的程 序段.
REP MOVSB
13
3.14 读程序: START:IN AL, 20H
MOV BL, AL
(1)功能:从端口20H输 入的数值加CL遍,CL的 值为从端口30H输入
汇编后,设数据段从200H开 0209H FEH
始的单元存放,请画出存放 示意图。
020AH FFH 020BH 00H 020CH 00H
-D DS:0200
1433:0200 10 FD 05 41 42 43 44 59-58 FE FF 00 00 0A 00 00
1433:0210 02 07 02 33 14
20
3.30 采用示意图来说明下列变量在内存单元的分配以及数据 的预置。
DATA DATA
SEGMENT ORG 4 VAR1 DW 9 VAR2 DW 2 DUP(0) CONT EQU 2 VAR3 DB COUNT DUP(?,8) VAR4 DB 2 DUP(?,CONT DUP(0),’AB’) ENDS
17
3.27 有数据段为:
DATA SEGMENT ORG 200H TAB1 DB 16,-3,5,’ABCD’ TAB2 DW ‘XY’,-2,0,0AH ARR1 DW TAB1 ARR2 DD TAB2
DATA ENDS
0200H 10H 020DH 0AH 0201H FDH 020EH 00H 0202H 05H 020FH 00H 0203H 41H 0210H 02H 0204H 42H 0211H 07H 0205H 43H 0212H 02H 0206H 44H 0213H ** 0207H 59H 0214H ** 0208H 58H
BECH1: MOV AH, 0FFH STOP: HLT 答:从端口5FH读入的数据大于等于80H
11
3.14 读程序: START:IN AL, 20H
MOV BL, AL
(1)功能:从端口20H输 入的数值加CL遍,CL的 值为从端口30H输入
IN AL, 30H MOV CL, AL MOV AX, 0
IN AL, 30H MOV CL, AL MOV AX, 0
(2)AX (3)
ADLOP:ADD AL, BL ADC AH, 0 DEC CL JNZ ADLOP HLT
START:IN AL, 20H MOV BL, AL IN AL, 30H MUL BL HLT
请问(1)本程序实现什么功能?
(7) INC BYTE PTR[SI+3] ;存储器,10123H
(8) MOV DL, ES:[BX+SI] ;存储器,22985H
(9) MOV AX, 2010H
;指令中
(10) MOV AX, DS:[2010H] ;存储器,12010H
4
3.5 现有DS=2000H, BX= 0100H, SI=0002H, (20100H)=12H,(20101H)=34H,(20102H)=56H
变量 VAR1 VAR2 VAR3
SEG 1433 1433 1433
OFFSET TYPE LENGTH SIZE
0000 0001 0002 2
0006 0002 0032 0064
006A 0001 000A
000A
19
3.29 已知数据区定义了下列语句,采用图示说明变量在内存 单元的分配情况以及数据的预置情况。 DATA SEGMENT A1 DB 20H,52H,2 DUP(0,?) A2 DB 2 DUP(2,3 DUP(1,2),0,8) A3 DB ‘GOOD!’ A4 DW 1020H,3050H A5 DD A3
7
3.10 编程序段分别完成如下功能: (1) AX寄存器低4位清零 AND AX, 0FFF0H (2) BX寄存器低4位置“1” OR AX, 000FH (3) CX寄存器低4位变反 XOR CX, 000FH (4) 测试DL寄存器位3,位6是否同时为0,若是,将0送 DL;否则1送DL。 TEST DL, 48H ;0100 1000B JZ NEXT MOV DL, 1 JMP EXIT NEXT:MOV DL, 0 EXIT:HLT
什么? 答:AX=0EDCCH, DX=5FFFH,程序功能是计算
表达式0-0A0001234H的值,结果的高16位 存到DX,低16位存到AX。
15
3.19 比较AX,BX,CX中带符号数的大小,将最大 的数放在AX中,请编程。
CMP AX, BX JGE NEXT MOV AX, BX NEXT:CMP AX, CX JGE NEXT1 MOV AX, CX NEXT1:HLT
(1) MOV AL, D
;指令中
(2) MOV AX, BX
;寄存器
(3) MOV AL, [BX+D]
;存储器,1700DH
(4) MOV AL, [BX+SI+D] ;存储器,1712DH
(5) MOV BX, [BX+SI+2] ;存储器,12C87H
(6) MOV [BX+5], AX
;寄存器
MOV DS, 2200H MOV ES, 3200H MOV SI, 2200H MOV DI, 3200H MOV CX, 20 REPZ CMPSB
INC DI
JZ NEXT
LOOP AGAIN
DEC SI
JMP EXIT
DEC DI
FIND:DEC SI
MOV [22A0H], SI
DEC DI
(8) PUSHF
;隐含寻址
(9) MOV AX, ES:[BX]
;寄存器间接寻址
(10) JMP FAR PTR PROCS_1 ;立即寻址
3
3.4 设DS=1000H,ES=2000H,BX= 2865H, SI=0120H,偏移量D=47A8H,试问下列各指令中 源操作数所在位置,若有物理地址请计算出其物理地 址值。
习题讲解
3.1 请解释名词:操作码、操作数、立即数、寄存器操作数、 存储器操作数。 操作码—说明指令操作的性质与所完成的功能 操作数—给出参与运算的操作数本身、操作数所在寄存器 或操作数在存储器中的地址,运算结果放至何处,或给出 下一条执行指令的地址信息 立即数—指令操作码的后面字节就是操作数本身,称为立 即数 寄存器操作数—操作数存放在CPU内部的寄存器中 存储器操作数—操作数存放在某个逻辑段的存储单元中
;AX=4C2AH
(4) MOV AX, [BX]
;AX=3412H
(5) MOV AX, 1100H[BX] ;AX=4C2AH
(6) MOV AX, [BX+SI] ;AX=7856H
(7) INC AX, [1100H+BX+SI] ;AX=65B7H
5
3.8 已知AX=2040H,DX=380H,端口 (PORT)=(80H)=1FH,(PORT+1) =45H,指出下列指令执行后,结果是什么?
(2)结果在哪里?
(3)用乘法指令MUL BL编程并使 结果不变
14
3.18 假设寄存器AX=1234H,DX=0A000H,阅 读下列程序段:
MOV BX, 0
MOV CX, BX
SUB CX, AX
SBB BX, DX
MOV AX, CX
MOV DX, BX 上述程序执行后,AX=?,DX=?,程序功能是
DATA ENDS
-D DS:0 1433:0000 20 52 00 00 00 00 02 01-02 01 02 01 02 00 08 02 1433:0010 01 02 01 02 01 02 00 08-47 4F 4F 44 21 20 10 50 1433:0020 30 18 00 33 14
(2)AX (3)
ADLOP:ADD AL, BL ADC AH, 0 DEC CL JNZ ADLOP HLT
START:IN AL, 20H MOV BL, AL IN AL, 30H MUL BL HLT
请问(1)本程序实现什么功能?
(2)结果在哪里?
(3)用乘法指令MUL BL编程并使 结果不变
(1) 用比较指令CMP实现
MOV DS, 2200H MOV ES, 3200H MOV SI, 2200H MOV DI, 3200H MOV CX, 20 AGAIN:MOV AL, [SI] CMP AL, ES:[DI] JNZ FIND INC SI
(2)用数据串比较指令 CMPSB实现
16
3.21 编写程序段,在数据区0000H:2000H开始100字节 范围内,查找字符’A’,若找到,则将偏移地址送入DX, 没有找到,则结束。
MOV AX, 0000H MOV ES, AX MOV DI, 2000H MOV AL, ‘A’ MOV CX, 100 REPNE SCASB JNZ EXIT DEC DI MOV DX, DI EXIT:HLT
M来自百度文库V [22A2H], DI
MOV [22A0H], SI
NEXT: HLT
MOV [22A2H], DI
EXIT:HLT
10
3.13 读下面程序段,请问在什么情况下,本段程 序的执行结果是AH=0
BEGIN: IN AL, 5FH TEST AL, 80H JZ BRCH1 MOV AH, 0 JMP STOP
(20103H)=78H, (21200H)=2AH, (21201H)=4CH, (21202H)=B7H, (21203H)=65H ,试说明下列指令 执行后,AX寄存器中的内容。
(1) MOV AX, 1200H
;AX=1200H
(2) MOV AX, BX
;AX=0100H
(3) MOV AX, [1200H]