XCHG 20H[BX][SI],AX
答(1) (CX)=56F6H; (2) (09226H)=5678H; (3) (AX)=1E40H; (4) (1E4F6H)=0024H;
(5) (09226H)=1234H,(AX)=5678H. 6.已知(SS)=09l 5H,(DS)=0930H,(SI)=0A0H,(DI)=1C0H,(BX)=80H,(BP)=470H。现有一指令“MOV AX,OPRD”,如源操作数的物理地址为095C0H,试用四种不同寻址方式改写此指令(要求上述每个已知条件至少要使用一次)。 答:(1)MOV AX,[BP]
(2)MOV AX,[BP+DI+80H] (3)MOV AX,[DI+0100H] MOV AX,[SI+0220H] (4)MOV AX,[02C0H]
7.试按下列要求分别编制程序段:
(1) 把标志寄存器中符号位SF置‘1’。 (2) 寄存器AL中高低四位互换。
(3) 由寄存器AX,BX组成一个32位带符号数(AX中存放高十六位),试求这个
数的负数。
(4) 现有三个字节存储单元A,B,C。在不使用ADD和ADC指令的情况下,
实现(A)+(B)=>C。
(5) 用一条指令把CX中的整数转变为奇数(如原来已是奇数,则CX中数据不变,
如原来是偶数,则(CX)+1形成奇数)。
答:(1)MOV AH, 80H
SAHF
(2 ) MOV BL, 0FH AND BL, AL SAL 4 SHR 4
XOR AL, BL (3 ) MOV DX, 7FH SUB AX, DX MOV DX, 0FFH SUB DX, BX MOV BX, DX (4 ) MOV AH, FFH MOV BL, [B] SUB AH, BL MOV BH, [A] SUB BH, AH MOV [C], BH (5 ) MOV AX, CX NOT AX TEST 01H JNZ NEXT HLT
NEXT: INC CX HLT
8.试给出下列各指令的机器目标代码:
(1) MOV BL,12H[SI] (2) MOV 12H[SI],BL
(3) SAL DX,1
(4) ADD 0ABH[BP][DI],1234H 答: (1) 10001010,11011111=8ADF; (2) 10001000,01011100=885C; (3) 11010001,11100010=D1E2; (4) 10000001,10000001=8181. 9.执行下列指令后:
STR1 DW ‘AB’ STR2 DB 16DUP(?) CNT EQU $-STR1 MOV CX,CNT MOV AX,STR1 HLT
寄存器CL的值是多少?寄存器AX的值是多少?
答:寄存器CL的值为12H,寄存器AX的值为4241H。
10.JMP FAR PTR ABCD(ABCD是符号地址)的转移方式是什么?
答:JMP FAT PTR ABCD 的转移方式是段间直接转移.
11.MOV AX,ES:[BX][SI]的源操作数的物理地址是多少(用CS、DS、ES、SS、BX、SI表示出即可)?
答 :MOV AX,ES:[BX] [SI]的源操作数的物理地址是[ES]×10H+[BX]+[SI]. 12.运算型指令的寻址和转移型指令的寻址,其不同点在什么地方?
答:运算型指令的寻址包括立即数寻址。寄存器寻址,直接寻址,寄存器间接寻址,寄存器
相对寻址和基址加变址寻址方式。这些寻址方式中,CS,IP寄存器的内容不会发生变化。 转移型指令的寻址方式包括段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址。在后三种寻址方式中,CS,IP寄存器的内容发生改变。
13.如果TABLE为数据段中0032单元的符号名,其中存放的内容为1234H,当执行指令”MOV AX,TABLE”和”LEA AX,TABLE”后,(AX)中的内容分别为多少? 答:执行MOV AX , TABLE后(AX)=1234H
执行LEA AX, TABLE 后 (AX)=0032.
14.当指令”SUB AX,BX”执行后,CF=1,说明最高有效位发生了什么现象?对无符号 数来说,操作结果发生了什么现象?
答:执行指令SUB AX,BX后,CF=1,说明最高位发生了借位对无符号来说,操作结果发生了溢出。
15.在1000H单元中有一条二字节指令JMP SHORT LAB,如果其中的偏移量分别为 30H、6CH、0B8H,则转向地址LAB的值分别为多少? 答:转向地址LAB的值分别为: 1000×10H+2H+30H=10032H 1000×10H+2H+6CH=1006EH 1000×10H+2H+B8H=100BAH
16.下面两个语句的区别在什么地方:
X1 EQU 1000H X2=1000H 答:“EQU”和“=”都可以作为赋值语句,但二者的区别是EQU伪操作中的表达式是不许重复定义的,而“=”伪操作则许重复定义。 17.调用指令CALL可进行哪四种调用?
答:调用指令CALL可进行段内直接调用,段内间接调用。段间直接调用。段间间接调用。 18.(AL)=9AH,(BL)=0BCH,当分别进行下列指令运算后,请写出标志位ZF、PF、CF、 SF的内容:( P8050)
(1) ADD AL,BL (2) SUB AL,BL (3) AND AL,BL
(4) OR AL,BL (5) XOR AL,BL
答:(1)ADD AL,BL 1 0 0 1 1 0 1 0 +)1 0 1 1 1 1 0 0 1,0 1 0 1 0 1 1 0 ∴ZF=0,PF=1 CF=1 SF=0
(2)SUB AL,BL
1 0 0 1 1 0 1 0 1 0 0 1 1 0 1 0 —)1 0 1 1 1 1 0 0 —〉 +)0 1 0 0 0 1 0 0 1 1 0 1 1 1 1 0
∴ ZF=0 PF=1 CF=1 SF=1 (3)AND AL,BL
1 0 0 1 1 0 1 0
AND)1 0 1 1 1 1 0 0 ∴ ZF=0 PF=0 CF=0 SF=0 1 0 0 1 1 0 0 0 (4)OR AL,BL
1 0 0 1 1 0 1 0 OR)1 0 1 1 1 1 0 0
∴ ZF=0 PF=1 CF=0 SF=0 1 0 1 1 1 1 1 0 (5)XOR AL,BL
1 0 0 1 1 0 1 0
XOR)1 0 1 1 1 1 0 0 ∴ ZF=0 PF=0 CF=0 SF=0 0 0 1 0 0 1 1 0
19.若(SP)=2800H,试用两种方法实现(SP)=27FEH. 答:方法一:执行一次PUSH指令 PUSH CX
方法二:执行一次PUSHF指令
20.试简述LES REG,SRC所完成的操作?
答:LES REG,SRC 是将SRC和SRC+1中的偏移量送到REG 寄存器,而将SRC+2和SRC+3中的段基址送ES段寄存器。
21.关系操作符EQ、NE、LT、GT、LE、GE计算的结果为逻辑值,试问0FFFFH代表 假,0代表真是否正确?
答:0FFFFH代表真。0表示结果为假。
22.堆栈存取操作是以字节为单位的.试分析当堆栈存入数据和从堆栈取出数据时SP 的变化?
答:当堆栈存入一个字时,(SP)<—SP—2
从堆栈中取出一个字时(SP)<—SP+2
23.试编写汇编程序段完成以下功能:将1000个字符的字符串从内存的BUFFER1搬 移到内存的BUFFER2中去。 解答 LEA SI,BUFFER1 LEA DI,BUFFER2 MOV CX,1000 CLD
REP MOVSb
24.试编写汇编程序段完成以下功能:将数据段中100个字的数据块BLOCK1搬移到 同一个数据段的BLOCK2中去。 解答: LEA SI,BLOCK1
LEA DI,BLOCK2 MOV CX,100 CLD
REP MOVSW
25.试编写汇编程序段完成以下功能:比较DEST和SOURCE中的500个字节,找出 第一个不相同的字节,如果找到,则将SOURCE中的这个数送AL中。 解答: CLD
LEA DI,DEST LEA SI,SOURCE MOV CX,500 REPE CMPB JCXZ NEXT DEC SI
MOV AL,BYTE PTR[SI] NEXT:HLT
26.试编写汇编程序段完成以下功能:求最大值,若自BLOCK开始的内存缓冲区中, 有100个带符号的数,希望找到其中最大的一个值,并将它放到MAX单元中。 解答:MOV BX,OFFSET BLOCK
MOV AX,[BX] MOV CX,100 ADD BX,2 F0:CMP AX,[BX]
JGE F1 MOV AX,BX F1:ADD BX,2
JCXZ NEXT JMP F0
MOV MAX,AX NEXT:HLT
27.假定(SS)=2000H,(SP)=0100H,(AX)=2107H,执行指令PUSH AX后,存放数据 21H的物理地址是多少? 解答:
07H 21H <—原栈顶20100
存放数据21H的物理地址是200FFH
第五章 汇编语言程序设计习题解答
1. 指出下列指令的错误: (1)MOV AH,BX
(2)MOV [BX],[SI] (3)MOV AX,[SI][DI]
(4)MOV MYDAT[BX][SI],ES:AX (5)MOV BYTE PTR[BX],1000 (6)MOV BX,OFFSET MYDAT[SI] (7)MOV CS,AX 答:(1)MOV AH,BX AH 为八位,BX为16位
相关推荐: