习题 1.简述冯·诺依曼计算机结构的基本含义。电子计算机与以往的计算工具所不同的基 本特征是什么? 2.电子计算机包括哪几个主要部分?各部分的基本功能是什么? 3.微型计算机的主机包括哪几个主要部分?各部分的基本功能是什么 4.简述存储器的读/写过程。计算机如何区分内存储器中存放的指令和数据? 5.运算器的基本功能是什么?它由哪几部分组成?各部分的作用是什么? 6.控制器的基本功能是什么?它由哪几部分组成?各部分的作用是什么? 7.何谓系统总线?系统总线分哪几组?各组总线的特点与作用是什么? 8.某CPU的数据总线为16位,地址总线为24位,那么它的最大寻址空间(地址范围) 是多少?经由数据总线传送的无符号数及带符号补码数的范围分别是多大? 9.试解释下列名词术语 (D)ALU (2)MIPS (3)RAM 4)ROM (5)存储器地址(6)时钟周期(7)机器周期(8)指令周期 (9)IO接口(10)O端口(11)中断 (12)DMA 10.对于单总线结构CPU的计算机,请分别写出完成下列操作所需要发出的微命令信 号,并说明该操作是否要占用机器周期 (1)PC→MAR(2)DBUS→MDR(3)MDR→DBUS (4)Y+Rl→Z 1l.对于单总线结构CPU的计算机,请分别写出下列指令的执行过程(包括取指令的过 程)。要求指出各个微操作步骤,需要哪几个机器周期,每个机器周期需要控制器发出哪些 微命令信号。 (1)ADD M (2)ADD Rl, R2 (3)JMP A(PC) 其中,R、R1、R2均为通用寄存器,M为存储单元的地址,JMPA(PC)是相对转移指令,转 移地址是当前的PC值加上数A。 习题二 1.80386以上的微处理器通常有哪几种工作模式?各自的主要特点是什么? 2.简要说明80x86/ Pentium处理器编程结构中所包含寄存器的主要类型及寄存器名称 3.80868088CPU标志寄存器中有哪几个状态标志位和控制标志位?它们各自的功能是 什么? 4.为什么要将存储系统空间划分成许多逻辑段,分段后如何寻址要访问的存储单元? 5.什么是物理地址?什么是逻辑地址?物理地址与逻辑地址有何联系? 6.什么是段基值?什么是偏移量?如何根据段基值和偏移量计算存储单元的物理地址? 7.在80x86实模式下,若(CS)=1200H,(IP)=0345H,则物理地址是什么?若(CS) 110H,(P)=1245H,则物理地址又是什么? 8.某存储单元的物理地址为28ABOH,若偏移量为1000H,则段基值为多少? 9.若80x86实模式下当前段寄存器的基值(CS)=2010H,(DS)=3010H,则对应的代码 段及数据段在存储空间中物理地址的首址及末址是什么? 10.设现行数据段位于存储器100004~1FFFH单元,则DS寄存器的内容应为多少? 1.什么是堆栈?它有什么用途?堆栈指针的作用是什么?举例说明堆栈的操作 12.在80x86实模式系统中,堆栈的位置如何确立?由SS寄存器的值所指定地址的位置 是不是栈底?为什么? 13.某系统中已知当前(SS)=2100H,(SP)=080AH,说明该堆栈段在存储器中的物理地 址范围。若在当前堆栈中存入10个字节数据后,那么SP的内容变为何值? 14.已知当前数据段中存有如图6.12所示的字符串数据,现要求在该字符串之后添加两
习题一 1. 简述冯·诺依曼计算机结构的基本含义。电子计算机与以往的计算工具所不同的基 本特征是什么? 2. 电子计算机包括哪几个主要部分?各部分的基本功能是什么? 3. 微型计算机的主机包括哪几个主要部分?各部分的基本功能是什么? 4. 简述存储器的读/写过程。计算机如何区分内存储器中存放的指令和数据? 5. 运算器的基本功能是什么?它由哪几部分组成?各部分的作用是什么? 6. 控制器的基本功能是什么?它由哪几部分组成?各部分的作用是什么? 7. 何谓系统总线?系统总线分哪几组?各组总线的特点与作用是什么? 8. 某 CPU 的数据总线为 16 位,地址总线为 24 位,那么它的最大寻址空间(地址范围) 是多少?经由数据总线传送的无符号数及带符号补码数的范围分别是多大? 9. 试解释下列名词术语: (1) ALU (2) MIPS (3) RAM (4) ROM (5) 存储器地址 (6) 时钟周期 (7) 机器周期 (8) 指令周期 (9) I/O 接口 (10) I/O 端口 (11) 中断 (12) DMA 10. 对于单总线结构 CPU 的计算机,请分别写出完成下列操作所需要发出的微命令信 号,并说明该操作是否要占用机器周期。 (1) PC→MAR (2) DBUS→MDR (3) MDR→DBUS (4) Y+R1→Z 11. 对于单总线结构 CPU 的计算机,请分别写出下列指令的执行过程(包括取指令的过 程)。要求指出各个微操作步骤,需要哪几个机器周期,每个机器周期需要控制器发出哪些 微命令信号。 (1) ADD M, R (2) ADD R1, R2 (3) JMP A(PC) 其中,R、R1、R2 均为通用寄存器,M 为存储单元的地址,JMPA(PC)是相对转移指令,转 移地址是当前的 PC 值加上数 A。 习题二 1. 80386 以上的微处理器通常有哪几种工作模式?各自的主要特点是什么? 2. 简要说明 80x86/Pentium 处理器编程结构中所包含寄存器的主要类型及寄存器名称。 3. 8086/8088 CPU 标志寄存器中有哪几个状态标志位和控制标志位?它们各自的功能是 什么? 4. 为什么要将存储系统空间划分成许多逻辑段,分段后如何寻址要访问的存储单元? 5. 什么是物理地址?什么是逻辑地址?物理地址与逻辑地址有何联系? 6. 什么是段基值?什么是偏移量?如何根据段基值和偏移量计算存储单元的物理地址? 7. 在 80x86 实模式下,若(CS)=1200H,(IP)=0345H,则物理地址是什么?若(CS)= 1110H,(IP)=1245H,则物理地址又是什么? 8. 某存储单元的物理地址为 28AB0H,若偏移量为 1000H,则段基值为多少? 9. 若 80x86 实模式下当前段寄存器的基值(CS)=2010H,(DS)=3010H,则对应的代码 段及数据段在存储空间中物理地址的首址及末址是什么? 10. 设现行数据段位于存储器 10000H~1FFFFH 单元,则 DS 寄存器的内容应为多少? 11. 什么是堆栈?它有什么用途?堆栈指针的作用是什么?举例说明堆栈的操作。 12. 在 80x86 实模式系统中,堆栈的位置如何确立?由 SS 寄存器的值所指定地址的位置 是不是栈底?为什么? 13. 某系统中已知当前(SS)=2100H,(SP)=080AH,说明该堆栈段在存储器中的物理地 址范围。若在当前堆栈中存入 10 个字节数据后,那么 SP 的内容变为何值? 14. 已知当前数据段中存有如图 6.12 所示的字符串数据,现要求在该字符串之后添加两
个字节数据0DH和0AH(回车、换行符),请说明需给出的段基值和偏移量。 习题三 回答下列各题 1)下面的伪指令语句经汇编后,W开始的存储单元中每个字的内容是什么? ORG3000HWDW1234H,5678H,$+3,9ABCH,$+3 (2)下列两条指令的功能是否相同? ①L:JMPL②JP$ 2.设W、B、C1、C2、C3、C4的定义如下,W的偏移地址部分为1000H WDW8086H,′H′,′AB′,6 BDB53H,K′,0,"ODH′ Cl EQU I EQU 129 C3 EQU S-W 4 EQU B-W 问C3和C4的值分别是多少?各表示什么意义?并请对下述各指令分别写出执行结果。 (1)MOV AL, B-5 (2)MOAL,2°(C2-C1-1) (3)MOV AX, C4-C3 (4)MOV AX, W+5 3.设X、Y为已知常数,下列各指令分别执行后,AX=? (1) MOV AX,(10*12-25)MOD8)+10/8 (2)MOV AX,(NOT (10 LT 5) XOR 30)AND((10 GE 5)OR NOT 40) (3)MOV AX, ((X LE Y)AND X)OR((Y LT X)ANDY 4.下面各组的几条伪指令说明符之间有什么不同?两组说明符之间的搭配关系如何? ② SEGMENT ③ MACRO (2)①ENDP ②ENDS ③ENDM ④END 5.指出下列各语句中的变量名、标号、过程名、段名、符号名、常量名、宏名 (1)NI SEGMENT (2)N2 PROC (3)N3DW5 (4)N4: MOV AX, BX (5)N5 EQUBYTE PTR (6)N6 MACRO (7)N7 ENDS (8)N8 ENDP (9)N9=100 6.设DS=2BC3H,数据段中的变量定义如下: DSEGMENT BMDB′ IBM-PC/XT ORG 1024H TI Dw 3 DUP(, 2 DUP(5, 0)) T2 EQUS-TI DENDS (1)试写出字母“P”的段基值和偏移地址。物理地址2BC38H中存放的一个字母是什么? (2)下述各条指令分别单独执行后,BX(或BL)=? ① MOV BX, OFFSET IBM ② MOV BX,SEGT1 ③ MOV BX, TYPE IBM ④ MOV BX, TYPE T1 ⑤ MOV BX LENGTH IBM ⑥ MOV BX, LENGTH TI ⑦ MOV BX,T2 ⑧ MOV BX, SIZE T1 9 MOVBX, WORD PTR IBM MOVBL, BYTE PTR Tl+1 7.下列程序段是否正确?请说明理由。 (1)DW′EFG′,12345H (2)BDB1,2
个字节数据 0DH 和 0AH(回车、换行符),请说明需给出的段基值和偏移量。 习题三 1. 回答下列各题: (1) 下面的伪指令语句经汇编后,W 开始的存储单元中每个字的内容是什么? ORG 3000H WDW1234H, 5678H, $+3, 9ABCH, $+3 (2) 下列两条指令的功能是否相同? ①L: JMPL ② JMP$ 2. 设 W、B、C1、C2、C3、C4 的定义如下,W 的偏移地址部分为 1000H: W DW 8086H,′H′, ′AB′,6 B DB 53H,′K′, 0, ′0DH′ C1 EQU 1 C2 EQU 129 C3 EQU $-W C4 EQU B-W 问 C3 和 C4 的值分别是多少?各表示什么意义?并请对下述各指令分别写出执行结果。 (1) MOV AL, B-5 (2) MOV AL, 2*(C2-C1-1) (3) MOV AX, C4-C3 (4) MOV AX, W+5 3. 设 X、Y 为已知常数,下列各指令分别执行后,AX=? (1) MOV AX, (((10*12-25) MOD 8)+10)/8 (2) MOV AX,(NOT (10 LT 5) XOR 30) AND ((10 GE 5)OR NOT 40) (3) MOV AX, ((X LE Y) AND X) OR ((Y LT X) AND Y) 4. 下面各组的几条伪指令说明符之间有什么不同?两组说明符之间的搭配关系如何? (1) ① PROC ② SEGMENT ③ MACRO (2) ① ENDP ② ENDS ③ ENDM ④ END 5. 指出下列各语句中的变量名、标号、过程名、段名、符号名、常量名、宏名。 (1) N1 SEGMENT (2) N2 PROC (3) N3 DW 5 (4) N4: MOV AX, BX (5) N5 EQUBYTE PTR (6) N6 MACRO (7) N7 ENDS (8) N8 ENDP (9) N9 = 100 6. 设 DS=2BC3H,数据段中的变量定义如下: DSEGMENT IBM DB′IBM-PC/XT′ ORG 1024H T1 DW 3 DUP(1, 2 DUP(5, 0)) T2 EQU$-T1 DENDS (1) 试写出字母“P”的段基值和偏移地址。物理地址 2BC38H 中存放的一个字母是什么? (2) 下述各条指令分别单独执行后, BX(或 BL)=? ① MOV BX, OFFSET IBM ② MOV BX, SEG T1 ③ MOV BX, TYPE IBM ④ MOV BX, TYPE T1 ⑤ MOV BX LENGTH IBM ⑥ MOV BX, LENGTH T1 ⑦ MOV BX, T2 ⑧ MOV BX, SIZE T1 ⑨ MOVBX, WORD PTR IBM MOVBL, BYTE PTR T1+1 7. 下列程序段是否正确?请说明理由。 (1) DW′EFG′, 12345H (2) B DB1, 2
DD′ABCD A3B4H MOVAL. B+2 8对数据段的如下定义,请依次写出各字节单元的内容。在以Ⅹ为开始地址的存储器 中,其内容能构成数据3000H的字单元有几个?其偏移地址是多少? D SEGMENT AT 3000H ORG X DBDDX Z DW Y TDB 2 DUP(67H, 76H) DENDS 9.写出伪指令语句 (1)将字节数据68,68H,-3,32Q,+200,1011B存放在定义为字变量的、以A为开 始地址的存储单元中。并且不改变数据按字节存储时的次序。 (2)将字数据6287H,154,3875,0A6H存放在定义为字节变量的、以B为开始 地址的存储单元中,并且不改变数据按字存储时的次序。 (3)在以C为首地址的存储单元中连续存放字节数据:2个23,5个A′,10个(1, 2)空出20个单元。请使用DUP操作符。 (4)在(3)的语句末尾增加一条名为D的符号定义语句,使D的值等于A、B、C三组 变量字节数之和。 (5)在(4)的语句末尾增加几条伪指令语句,使字变量E的内容等于上述字变量的总 字节数与字节变量的总字节数之差。 10.指出下列每一对伪指令语句的区别 (1)ⅹDB89H Y EQU 89H (2)X DW 7805H; Y EQU BYTE PTR X (3)X EQU 38 (4)XDW6288H Y DB 62H, 88H (5)XDW5816H;YDw5816 11.指出下列各题中的伪指令语句是否正确?并说明理由。 (I)A DB 387 (2)B DB+255 (3)C EQU K (4)D EQU 86H (5)F EQU 86 (6)G=866 E EQU D+7 F EQU 88 G=G+8 ()H SEG H ENDS (8)I PROC ENDP (9)J MACRO J ENDM 习题四 1.设B为数据段中的字变量,L为标号,指出下列各指令中源操作数和目的操作数 寻址方式。若B的偏移地址部分为1234H,L的偏移地址部分为5678H,SS=1000H、 DS=2000H、ES=3000H、BX=4000H、BP=5000H、SI=6000H、Dl=7000H、SP=800H,试 分别计算指令中存储器操作数的物理地址
DD′ABCD′, A3B4H MOVAL, B+2 8. 对数据段的如下定义,请依次写出各字节单元的内容。在以 X 为开始地址的存储器 中,其内容能构成数据 3000H 的字单元有几个? 其偏移地址是多少? D SEGMENT AT 3000H ORG 30H X DBDDX Z DW Y T DB 2 DUP(67H,76H) DENDS 9. 写出伪指令语句: (1) 将字节数据 68, 68H,-3, 32Q, +200, 1011B 存放在定义为字变量的、以 A 为开 始地址的存储单元中。并且不改变数据按字节存储时的次序。 (2) 将字数据 6287H, 154, 3875, 0A6H 存放在定义为字节变量的、以 B 为开始 地址的存储单元中,并且不改变数据按字存储时的次序。 (3) 在以 C 为首地址的存储单元中连续存放字节数据: 2 个 23,5 个′A′,10 个(1, 2),空出 20 个单元。请使用 DUP 操作符。 (4)在(3)的语句末尾增加一条名为 D 的符号定义语句,使 D 的值等于 A、B、C 三组 变量字节数之和。 (5)在(4)的语句末尾增加几条伪指令语句,使字变量 E 的内容等于上述字变量的总 字节数与字节变量的总字节数之差。 10. 指出下列每一对伪指令语句的区别: (1) X DB 89H; Y EQU 89H (2) X DW 7805H ; Y EQU BYTE PTR X (3) X EQU 38 ; Y=38 (4) X DW 6288H ; Y DB 62H,88H (5) X DW 5816H ; Y DW 5816 11. 指出下列各题中的伪指令语句是否正确?并说明理由。 (1) A DB 387 (2) B DB+255 (3) C EQU K (4) D EQU 86H (5) F EQU 86 (6) G=866 E EQU D+7 F EQU 88 G=G+8 (7) H SEG …… H ENDS (8) I PROC …… ENDP (9) J MACRO …… J ENDM 习题四 1. 设 B 为数据段中的字变量,L 为标号,指出下列各指令中源操作数和目的操作数的 寻址方式。若 B 的偏移地址部分为 1234H,L 的偏移地址部分为 5678H,SS=1000H、 DS=2000H、ES=3000H、BX=4000H、BP=5000H、SI=6000H、DI=7000H、SP=8000H,试 分别计算指令中存储器操作数的物理地址
(1)MOV [BP+SI],AX (2)MOV CX, [DI+4] (3)MOV WORD PTR [SI],300 (4)PUSHF (6 STOSW (7)AND AX, B+6 (8)ADD AX, [BX+DI+8] 9)JMP B 10)JMP L 2.判断下列指令是否正确并说明理由。其中,B为数据段中的字节变量。 (1)MOV BX, AL (2)MOV AX, CS: [BX] (3)MOV [50-BP],AX (4)MOV 5, AL (5)MOV BX, [BX+OFFSET B] (6)MOAL,000001101B (7)MOV AX, SS: [SP+DIJ ( 8)MOV AX, WORD PTR BX (9)MOV DX, [BX+BP] (10) MOV AX, BX-2 (11)PUSH SP (12)POP CS (13)XCHG SP, BP (14)OUT 258H, AL (15)SHL AX 2 (16)INC AL, I (17)ADD[BX],20H (18)SUB BYTE PTR [BX], [DI] (19) CMP CL, 100H (20)MUL25 3.下列每组中的两条指令有什么区别?其中,W为数据段中的字变量,N为不超过16 位的常量 (1)MOV AX, 1000H MOv AX, DS: [1000H] (2)MOV AX, BX MOV AX, [BX] (3)MOV AX, N MOV AX. W (4)MOV AX, [BX+N] MOv AX, [ BX+W (5)MOV [BP] [SI],CL MOV DS:[BP][S冂],CL (6)MOV AL,5 IN AL, 5 (7)M (8)AND AX, BX TEST AX, BX (9)SUB AX, BX CMP AX, BX (10)INC SI add SI, 1 (I1)DEC DI JB DI, I (12)NEG AX NOT AX 4.试分别写出一条MOV指令,实现下述功能 (1)将十进制数98以未组合BCD码数的形式送入AX。 (2)使其与数据定义语句“BDB32H,34H”的效果相同 5.写出指令序列,将数据段内首地址为B的字数组的第7个(从1算起)字送到CX寄存 (1)使用直接寻址方式 (2)使用BX,寄存器间接寻址方式 (3)使用BX,寄存器相对寻址方式(4)使用BX和SI,基址变址寻址方式 6.写出与XLAT指令等效的指令序列 7.写出指令序列,将BL中的数送入BX中并保持其所代表的值不变 8.分别用一条指令完成下述程序段(1)、(2)的功能 (1)MOV BX, DS: [1234H] (2)ADD BX, SI MOv AX, DS: [1236H] MOV DS. AX MOV DL BX 9.试用2条指令将AL的0、2、4、6位求反,并将1、3、5、7位置1。请给出多种解
(1) MOV[BP+SI], AX (2) MOV CX, [DI+4] (3) MOV WORD PTR [SI], 300 (4) PUSHF (5) LODSB (6) STOSW (7) AND AX, B+6 (8) ADD AX, [BX+DI+8] (9) JMP B (10) JMP L 2. 判断下列指令是否正确,并说明理由。其中,B 为数据段中的字节变量。 (1) MOV BX, AL (2) MOV AX, CS:[BX] (3) MOV [50-BP], AX (4) MOV 5, AL (5) MOV BX, [BX+OFFSET B] (6) MOV AL, 0000000010101101B (7) MOV AX, SS:[SP+DI] (8) MOV AX, WORD PTR BX (9) MOV DX, [BX+BP] (10) MOV AX, BX-2 (11) PUSH SP (12) POP CS (13) XCHG SP, BP (14) OUT 258H, AL (15) SHL AX 2 (16) INC AL, 1 (17) ADD [BX], 20H (18) SUB BYTE PTR [BX], [DI] (19) CMP CL, 100H (20) MUL 25 3. 下列每组中的两条指令有什么区别?其中,W 为数据段中的字变量,N 为不超过 16 位的常量。 (1) MOV AX,1000H MOV AX,DS:[1000H] (2) MOV AX,BX MOV AX,[BX] (3) MOV AX, N MOV AX, W (4) MOV AX, [BX+N] MOV AX, [BX+W] (5) MOV [BP][SI],CL MOV DS:[BP][SI],CL (6) MOV AL,5 IN AL,5 (7) MOV AX,W LEA AX,W (8) AND AX,BX TEST AX,BX (9) SUB AX,BX CMP AX,BX (10) INC SI ADD SI,1 (11) DEC DI SUB DI,1 (12) NEG AX NOT AX 4. 试分别写出一条 MOV 指令,实现下述功能。 (1) 将十进制数 98 以未组合 BCD 码数的形式送入 AX。 (2) 使其与数据定义语句“BDB32H, 34H”的效果相同。 5. 写出指令序列,将数据段内首地址为 B 的字数组的第 7 个(从 1 算起)字送到 CX 寄存 器: (1) 使用直接寻址方式 (2) 使用 BX,寄存器间接寻址方式 (3) 使用 BX,寄存器相对寻址方式 (4) 使用 BX 和 SI,基址变址寻址方式 6. 写出与 XLAT 指令等效的指令序列。 7. 写出指令序列,将 BL 中的数送入 BX 中并保持其所代表的值不变。 8. 分别用一条指令完成下述程序段(1)、(2)的功能。 (1) MOV BX, DS:[1234H] (2) ADD BX, SI MOV AX, DS:[1236H] ADD BX, 20 MOV DS, AX MOV DI, BX 9. 试用 2 条指令将 AL 的 0、2、4、6 位求反,并将 1、3、5、7 位置 1。请给出多种解
答 10.试用1条指令完成下述操作,并请给出多种解答。 (1)将AX的所有各位清0(2)将AX的所有各位置1(3)将AX的所有各位求 反 11.试用1条指令测试AL的内容并置标志位,但AL的内容不变,请给出多种解答。 测试后,如何判断AL是否为零?如何判断AL是正数还是负数?如何判断AL中有偶数个 1还是有奇数个1? 12.设AL=0B7H。写出依次执行完下列每一条指令后AL的值。 (1)SAR AL, 1(2)SHL AL, 1 (3)ROR AL, 1(4)RCL AL, I 13.试编写程序段,用移位和相加的方法将AL中的无符号数乘以21后存入AX 14.写出下列各程序段执行后AL的值 (1)MOV AL, 1 (2)MOV AL, OFH 3)MOV AL, BL(4)MOV AL, 34H ROR AL. I OFFH NOT AL OR AL. AL MOV CL.7 XOR AL BL OR AL. 3 NEG AL SHR AL. CL OR AL, BL ADC AL. 1 15.设AX=1234H,BL=91H,分别执行下述各指令后AX=?,各标志位的值是什么? (1)ADD AL, BL (2)SUB AL, BL (3)MUL BL (4)IMUL BL (5)DIV BL(6)IDIV BL 16.按要求分别完成下述操作 (1)用1条指令将-15按补码形式存入AL。 (2)用2条运算类指令将AL中的负数(例如-15)补码变成该负数的原码 (3)设AL中为负数(例如,-15)的补码,用1条运算类指令使AL中的数 ①变成该负数的反码②变成相反的正数的补码 ③变成比相反的正数少1的数的补码④变成比它本身大1的数的补码 ⑤变成比它本身小1的数的补码 ⑥变成它本身的2倍 ⑦作为无符号数变成它本身的一半 ⑧作为带符号数变成它本身的一半 ⑨作为无符号数变成它本身的平方 ⑩作为带符号数变成它本身的平方 17.分别写出指令序列,完成下述操作: (1)将AL中的每一位都扩展(复制)为相邻的两位,然后放入AX中,即使AL中的位编 号从76543210变为AX中的位编号7766554433221100。 (2)将AL的4个偶数位移到低四位、4个奇数位移到高四位,并保持原来各自的相对 位置不变,即使位编号从76543210变为75316420。 18.设AX=6EH,AF=CF=0,则执行AAA指令后,AX=?若执行的是DAA指令,则 19.如果JZL指令的实际转移距离(L-IP)超过了8位补码的表数范围,即在(-128~+127) 之外,应如何处理才能达到同样的转移目的? 20.设L为标号,则下面的4条指令都是直接转移方式。它们的区别是什么? (1)JC L (2)JMP SHORT L (3)JMPNEAR PTR L (4)JMPFAR PTR L 21.执行“REIN4”指令时,返回地址从(SP+1,SP)“弹出”还是从(SP+5,SP+4)“弹出 ?若设SP=50H,则执行“RETN4”指令后,SP=? 22.下述每组中的两条指令的执行结果有什么不同? (1)MOV AL, [SI] LODSB (2)MOV ES: [DI], AL STOSB (3)CMP AX, ES: [DI] SCASW
答。 10. 试用 1 条指令完成下述操作,并请给出多种解答。 (1) 将 AX 的所有各位清 0 (2) 将 AX 的所有各位置 1 (3) 将 AX 的所有各位求 反 11. 试用 1 条指令测试 AL 的内容并置标志位,但 AL 的内容不变,请给出多种解答。 测试后,如何判断 AL 是否为零?如何判断 AL 是正数还是负数?如何判断 AL 中有偶数个 1 还是有奇数个 1? 12. 设 AL=0B7H。写出依次执行完下列每一条指令后 AL 的值。 (1) SAR AL, 1 (2) SHL AL, 1 (3) ROR AL, 1 (4) RCL AL, 1 13. 试编写程序段,用移位和相加的方法将 AL 中的无符号数乘以 21 后存入 AX。 14. 写出下列各程序段执行后 AL 的值。 (1) MOV AL, 1 (2) MOV AL, 0FH (3) MOV AL, BL (4) MOV AL, 34H ROR AL, 1 XOR AL, 0FFH NOT AL STC OR AL, AL MOV CL, 7 XOR AL, BL OR AL, 3 NEG AL SHR AL, CL OR AL,BL ADC AL, 1 15. 设 AX=1234H,BL=91H,分别执行下述各指令后 AX=?, 各标志位的值是什么? (1) ADD AL, BL (2) SUB AL, BL (3) MUL BL (4) IMUL BL (5) DIV BL (6) IDIV BL 16. 按要求分别完成下述操作: (1) 用 1 条指令将-15 按补码形式存入 AL。 (2) 用 2 条运算类指令将 AL 中的负数(例如-15)的补码变成该负数的原码。 (3) 设 AL 中为负数(例如,-15)的补码,用 1 条运算类指令使 AL 中的数: ① 变成该负数的反码 ② 变成相反的正数的补码 ③ 变成比相反的正数少 1 的数的补码 ④ 变成比它本身大 1 的数的补码 ⑤ 变成比它本身小 1 的数的补码 ⑥ 变成它本身的 2 倍 ⑦ 作为无符号数变成它本身的一半 ⑧ 作为带符号数变成它本身的一半 ⑨ 作为无符号数变成它本身的平方 ⑩ 作为带符号数变成它本身的平方 17. 分别写出指令序列,完成下述操作: (1) 将 AL 中的每一位都扩展(复制)为相邻的两位,然后放入 AX 中,即使 AL 中的位编 号从 76543210 变为 AX 中的位编号 7766554433221100。 (2) 将 AL 的 4 个偶数位移到低四位、4 个奇数位移到高四位,并保持原来各自的相对 位置不变,即使位编号从 76543210 变为 75316420。 18. 设 AX=6EH,AF=CF=0,则执行 AAA 指令后,AX=? 若执行的是 DAA 指令,则 AX=? 19. 如果 JZ L 指令的实际转移距离(L-IP)超过了 8 位补码的表数范围,即在(-128~+127) 之外,应如何处理才能达到同样的转移目的? 20. 设 L 为标号,则下面的 4 条指令都是直接转移方式。它们的区别是什么? (1) JC L (2) JMP SHORT L (3) JMPNEAR PTR L (4) JMPFAR PTR L 21. 执行“RETN4”指令时,返回地址从(SP+1,SP)“弹出”还是从(SP+5, SP+4)“弹出 ”? 若设 SP=50H,则执行“RETN4”指令后,SP=? 22. 下述每组中的两条指令的执行结果有什么不同? (1) MOV AL, [SI] LODSB (2) MOV ES:[DI], AL STOSB (3) CMP AX, ES:[DI] SCASW