1 那些寄存器可以用来指示存储器地址?
2 请将下列左边的项和右边的解释联系起来(把所选字母放在括号中):
(1) CPU (
)
A.保存当前栈顶地址的寄存器。
(2) 存储器 (
)
B.指示下一条要执行的指令的地址。
(3) 堆栈 (
)
C.存储程序、数据等信息的记忆装置,微机有RAM和ROM两种。
(4) IP (
)
D.以后进先出方式工作的存储空间。
(5) SP (
)
E.把汇编语言程序翻译成机器语言程序的系统程序。
(6) 状态标志 (
)
F.唯一代表存储空间中每个字节单元的地址。
(7) 控制标志 (
)
G.能被计算机直接识别的语言。
(8) 段寄存器 (
)
H.用指令的助记符、符号地址、标号等符号书写程序的语言。
(9) 物理地址 (
)
I.把若干个模块连接起来成为可执行文件的系统程序。
(10) 汇编语言 (
)
J.保存各逻辑段的起始地址的寄存器,8086/8088机有四个:CS、DS、
SS、ES。
(11) 机器语言 (
)
K.控制操作的标志,如DF位。
(12) 汇编程序 (
)
L.记录指令操作结果的标志,共6位:OF、SF、ZF、AF、PF、CF。
(13) 连接程序 (
)
M.分析、控制并执行指令的部件,由算术逻辑部件ALU和寄存器等
组成。
(14) 指令 (
)
N.由汇编程序在汇编过程中执行的指令。
(15) 伪指令 (
)
O.告诉CPU要执行的操作(一般还要指出操作数地址),在程序运行时
执行。
第3章习题
3.1
给定(BX)=637DH,(SI)=2A9BH,位移量X=7237H,试确定在以下各种寻址方式下的有效地址是什么?
(1) 立即寻址
(2) 直接寻址
(3) 使用BX的寄存器寻址
(4) 使用BX的间接寻址
(5) 使用BX的变址寻址
(6) 基址变址寻址
3.2 试根据以下要求写出相应的汇编语言指令
(1) 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。
(2)
用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。
(3) 用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中。
(4)
用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回存储单元中。
(5) 把数0B5H与(AL)相加,并把结果送回AL中。
3.3 写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。要求使用以下几种寻址方式:
(1) 寄存器间接寻址
(2) 变址寻址
(3) 基址变址寻址
3.4
现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。
(1) MOV AX, 1200H
(2) MOV AX, BX
(3) MOV AX, [1200H]
(4) MOV AX, [BX]
(5) MOV AX, 1100H[BX]
(6) MOV AX, [BX][SI]
(7) MOV AX,
1100H[BX][SI]
3.8
假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变量名VAL的偏移地址为0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?
(1) MOV AX,
0ABH
(2) MOV AX, BX
(3) MOV AX,
[100H]
(4) MOV AX, VAL
(5) MOV AX,
[BX]
(6) MOV AX, ES:[BX]
(7) MOV AX,
[BP]
(8) MOV AX, [SI]
(9) MOV AX,
[BX+10]
(10) MOV AX, VAL[BX]
(11) MOV AX,
[BX][SI]
(12) MOV AX, VAL[BX][SI]
3.9 在ARRAY数组中依次存储了七个字数据,紧接着是名为ZERO的字单元,表示如下:
ARRAY DW 23, 36, 2, 100, 32000, 54, 0
ZERO DW ?
(1)
如果BX包含数组ARRAY的初始地址,请编写指令将数据0传送给ZERO单元。
(2) 如果BX包含数据0在数组中的位移量,请编写指令将数据0传送给ZERO单元。
3.10
如TABLE为数据段中0032单元的符号名,其中存放的内容为1234H,试问以下两条指令有什么区别?指令执行完后AX寄存器的内容是什么?
MOV AX, TABLE
LEA AX, TABLE
3.11 执行下列指令后AX寄存器中的内容是什么?
TABLE DW
10, 20, 30, 40, 50 ;000AH, 0014H, 001EH, 0028H, 0032H
ENTRY DW
3
┇
MOV BX,
OFFSET TABLE
ADD BX,
ENTRY
MOV AX,
[BX]
3.12 下列ASCII码串(包括空格符)依次存储在起始地址为CSTRING的字节单元中:
CSTRING
DB ‘BASED ADDRESSING’
请编写指令将字符串中的第1个和第7个字符传送给DX寄存器。
3.13
已知堆栈段寄存器SS的内容是0FFA0H,堆栈指针寄存器SP的内容是00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令。试画出堆栈区和SP的内容变化过程示意图(标出存储单元的物理地址)。
3.15 求出以下各十六进制数与十六进制数62A0H之和,并根据结果设置标志位SF、ZF、CF和OF的值。
(1)
1234H (2)
4321H
(3)
CFA0H
(4) 9D60H
3.16 求出以下各十六进制数与十六进制数4AE0H的差值,并根据结果设置标志位SF、ZF、CF和OF的值。
(1) 1234H
(2) 5D90H (3) 9090H (4) EA04H
3.17 写出执行以下计算的指令序列,其中X、Y、Z、R、W均为存放16位带符号数单元的地址。
(1)
Z←W+(Z-X)
(2)
Z←W-(X+6)-(R+9)
(3)
Z←(W*X)/(Y+6),R←余数
(4)
Z←((W-X)/5*Y)*2
3.18 已知程序段如下:
MOV AX, 1234H
MOV CL, 4
ROL AX, CL
DEC AX
MOV CX, 4
MUL CX
试问:
(1) 每条指令执行完后,AX寄存器的内容是什么?
(2) 每条指令执行完后,进位、符号和零标志的值是什么?
(3) 程序结束时,AX和DX的内容是什么?
3.20 变量DATAX和变量DATAY的定义如下:
DATAX DW 0148H
DW 2316H
DATAY DW 0237H
DW 4052H
请按下列要求写出指令序列:
(1)
DATAX和DATAY两个字数据相加,和存放在DATAY中。
(2)
DATAX和DATAY两个双字数据相加,和存放在从DATAY开始的双字单元中。
(3)
DATAX和DATAY两个字数据相乘。
(4) DATAX除以23
3.21 写出对存放在DX和AX中的双字长数求补的指令序列。
3.22 试编写一程序求出双字长数的绝对值。双字长数在A和A+2单元中,结果存放在B和B+2单元中。
3.23 假设(BX)=0E3H,变量VALUE中存放的内容为79H,确定下列各条指令单独执行后的结果。
(1) XOR BX, VALUE
(2) AND BX, VALUE
(3) OR BX, VALUE
(4) XOR BX, 0FFH
(5) AND BX, 0
(6) TEST BX, 01H
3.24 试写出执行下列指令序列后BX寄存器的内容。执行前(BX)=6D16H。
MOV CL,
7
SHR BX,
CL
3.25 试用移位指令把十进制数+53和-49分别乘以2。它们应该用什么指令?得到的结果是什么?如果要除以2呢?
3.26 试分析下面的程序段完成什么功能?
MOV CL, 04
SHL DX, CL
MOV BL, AH
SHL AX, CL
SHR BL, CL
OR DL, BL
3.27 假定(DX)=0B9H,(CL)=3,(CF)=1,确定下列各条指令单独执行后DX中的值。
(1) SHR DX, 1
(2) SAR DX, CL
(3) SHL DX, CL
(4) SHL DL, 1
(5) ROR DX, CL
(6) ROL DL, CL
(7) SAL DH, 1
(8) RCL DX, CL
(4) RCR DL, 1
加载中,请稍候......