自考
(5) MOV [DI],[SI]
【解答】存储器单元之间不可直接传送,即两个操作数不能同为内存操作数。 (6) MOV AL,[CX]
【解答】CX不可以作为间址寄存器,只能用BX、BP、SI、DI。 (7) MOV AL,[SI] [DI]
【解答】 基址加变址寻址时 ,基址寄存器只能用BX或BP,变址寄存器只能用SI或DI,这里源操作数寻址用[SI+DI]是错误的。 (8) ADD BX,DS
【解答】DS段寄存器不能当通用寄存器用,故不可以出现在ADD指令中。 (9) INC [BX]
【解答】 [BX]寻址数据类型不明确,应加类型说明 BYTE PTR [BX] 或 WORD PTR [BX]。 (10) SHL AX
【解答】缺少一个操作数。正确格式应为SHL AX, 1或SHL AX, CL(1或CL为移位次数)。
3-3 设DS=1000H,SS=2000H,AX=1A2BH,BX=1200H,CX=339AH,BP=1200H,
SP=1352H,SI=1354H,(11350H)=0A5H,(11351H)=3CH,(11352H)=0FFH,(11353H)=26H,(11354H)=52H,(11355H)=0E7H,(126A4H)=9DH,(126A5H)=16H,(21350H)=88H,(21351H)=51H 下列各指令都在此环境下执行,在各小题的空格中填入相应各指令的执行结果。 MOV AX,1352H 【解答】AX=1352H (1) MOV AX,[1352H] 【解答】AX=26FFH
(2) MOV 0150H [BX],CH
【解答】(11350H)=33H, (11351H)=3CH (3) MOV AX,0150H [BP] 【解答】AX=5188H (4) POP AX
【解答】AX=(21352H), SP=1354H (5) ADD [SI],CX
【解答】(11354H)=0ECH, (11355H)=1AH, SF=0, ZF=0, PF=1, CF=1, OF=0 (6) SUB BH,0150H [BX] [SI]
【解答】BH=75H, SF= 0, ZF=0, PF=0, CF=1, OF=0 (7) INC BYTE PTR 0152H [BX]
【解答】(11352H)=00H, (11353H)=26H, CF=0 (8) INC WORD PTR 0152H [BX]
【解答】(11352H)=00H, (11353H)=27H, CF=0 (10) SAR BYTE PTR 0150H [BX],1 【解答】(11350H)=0D2H, CF=1, OF=0 (11)SAL BYTE PTR 0150H [BX],1
【解答】(11350H)=4AH, CF=1, OF=1
3-4 写出下列无条件转移指令执行后的CS和IP值。
【解答】 CS的值 (1) 2000H (2) 2000H (3) 2000H (4) 3000H (5) 2000H (6) 3000H
IP的值 016EH+2+0FFE7H=0157H 016EH+2+0016H=0186H 16C0H 0146H 1770H 0146H
3-5 阅读下列各小题的指令序列,在后面空格中填入该指令的执行结果。
【解答】
(1) AL=02H, BL=85H, CF=1 (2) AX=0000H, CF=0 (3) AX=0000H, CF=0
第6页【本课后解答题共32页】
自考
(4) BX=0FFFFH, CF=1
3-6 写出每条指令执行后各寄存器内容的变化情况,并画出堆栈的存储情况。 【解答】
程序 AX BX CX DX PUSH AX 7CA6H 1358H 000AH 5766H PUSH DX 7CA6H 1358H 000AH 5766H POP BX 7CA6H 5766H 000AH 5766H POP CX 7CA6H 5766H 7CA6H 5766H
堆栈的变化情况图: CX BX
SS:SP指针 DXL DXL 6000:0FFCH DXH DXH 6000:0FFEH AX6000:0FFEH L AXL AXL AXL 6000:0FFEH AXH AXH AXH AXH 6000:1000H 6000:1000H 6000:1000H 6000:1000H
执行第一条指令后 执行第二条指令 后 执行第三条指令后 执行第四条指令后
3-7 阅读分析下列指令序列
【解答】 (1) 转向L1
(2) 转向 L1
(3) 转向L2
(4) 转向 L5
(5) 转向 L5
3-8 8种cc条件转移指令中有哪几条可以满足条件转移到NEXT去。 【解答】 (1) NB, BE, NL, LE
(2) NB, NBE, L , LE (3) NB, NBE, NL, NLE (4) NB, NBE, NL, NLE (5) B, BE, NL, NLE (6) B, BE, L, LE (7) B, BE, L, LE (8) NB, BE, NL, LE
3-9 用移位和循环指令编写一段指令序列,实现将在DX:AX中的32位二进制数乘2及除2的功能。
【解答】
(1) 乘2功能 SHL AX,1 RCL DX,1
(2) 乘2功能 SAL AX,1 RCL DX,1
除2功能 SHR DX,1 RCR AX,1 除2功能 SAR DX,1 RCR AX,1
3-10 数0~15的平方值存放在数据段起始地址为1000H的内存连续单元中,用XLAT指令编写一段指令序列,实现用查表法求得数N(0~15)得平方值。
【解答】MOV BX,1000H
MOV AL,N ;N为0~15之间任意一个数 XLAT ;N的平方值在AL中
第7页【本课后解答题共32页】
自考
3-11 编写一段指令序列,测试AL的内容,若低4位全为0,就转移去由标号NEXT表示的目标地址执行程序,否则就继续顺序执行下去。
【解答】TEST AL,0FH
JZ NEXT
3-12 寄存器AX和BX各有两位非压缩BCD数,编写一段指令序列,将这两个两位非压缩BCD数的和存入AX。
【解答】 ADD AL,BL ;个位加
AAA ;个位非压缩BCD加法调整 MOV CL,AL ;个位BCD和暂保存在CL MOV AL,AH
ADD AL,BH ;十位加
AAA ;十位非压缩BCD加法调整 MOV AH,AL
MOV AL,CL ;两位非压缩BCD和存入AX
3-13 用串操作指令编写一段指令序列。 【解答】 (1)MOV SI,0200H
MOV DI,1400H STD
MOV CX,100 REP MOVSB
(2)MOV DI,0100H
MOV CX,100 CLD
MOV AX,2A84H REPNZ SCASW
JZ FOUND
……
3-14 DX:AX和CX:BX中各有两个32位有符号数,编写一段指令序列,对这两个数求和,结果放在DX:AX中。
设DX:AX=78A3057FH(正数) CX:BX=C880AABBH(负数) 【解答】ADD AX,BX
ADC DX,CX ;结果32位和存放在DX:AX中
3-15 DX:AX中有一个32位有符号数,编写一段指令序列,求得该数的相反数(注:即符号相反的数),仍放在DX:AX中。 【解答】NOT AX
INC AX NOT DX
第8页【本课后解答题共32页】
自考
第四章 8086 汇编语言程序设计
4-1 画出下列语句中的数据在存储器中的存储情况。 【解答】
ARRAYB 3FH 63H 41H 42H 43H 44H ? ? ? 01H 03H 01H 03H ARRAYW 34H 12H 05H 00H 42H 41H 44H 43H ? ? 01H 00H 03H 00H 01H 00H 03H 00H 4-2 DLENGTH的值是多少?
【解答】 (DLENGTH)=0026H (即38) 4-3 程序中数据定义如下:
ARRAY DB ‘ABCDEF’ RESULT DB ?
TABLE DW 20 DUP(?)
【解答】则执行指令后结果如下:(按给定指令顺序) AX=0001H
BX=0002H
CX=0014H (20) DX=0001H
SI=0028H (40) DI=0001H
4-4 指令AND AX,7315H AND 0FFH中,两个AND有什么区别?这两个AND 操作分别在什么时候执行?
【解答】第一个 AND是“与”指令操作码,第二个AND是“与”运算符。 第一个AND在程序运行过程中执行;第二个AND是在对源程序“汇编”的过程中执行。 4-5 设BX=1034H,则执行下列指令后,AX和CX各为多少?
MOV AX,BX AND 0FFH
MOV CX,BX EQ 1234H 若BX=1234H,则结果如何?
第9页【本课后解答题共32页】
自考
【解答】当BX=1034H时 AX=0034H CX=0000H 当BX=1234H时 AX=0034H CX=0FFFFH 4-6 设已知语句 :
ORG 0024H
DATA1 DW 4,12H,$+4
则执行指令MOV AX,DATA1+4后AX的值是多少 【解答】 AX=002CH
4-7 已知数据定义语句为: BUFFER DB 16 DUP (0,2 DUP(1))
则其中字数据单元内容为0100H的单元数是多少个? 又其中字数据单元内容为0001H的单元数是多少个? 【存储示意图】 BUFFER 00H 【解答】参看左边存储示意图可知 01H 其中字数据单元内容为0100H的单元 01H 数为16个。 00H 字数据单元内容为0001H的单元数为01H
15个。 01H
00H
01H
01H
00H
01H
01H 48个字节 00H
01H
01H
00H 01H 01H 00H 01H 01H …. …. …. 00H 01H
01H
4-8 要在以DA1为首址的数据区中依次存放下列数据:'A','B',0,0,'C','D',0,0,请分别用DB、DW和DD语句实现。
【解答】DA1 DB 'A','B',0,0,'C','D',0,0 DA1 DW 'BA',0,'DC',0
DA1 DD 00004241H,00004443H 4-9 找出数组中的最大值和最小值。
【解答】DATA SEGMENT
ARRAY DB 3,6,89,99,50,11,3,34,68,127 N EQU $-ARRAY MAX DB ? MIN DB ? DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX
MOV SI,OFFSET ARRAY MOV CX,N-1
第10页【本课后解答题共32页】