3.2 指出下列MOV指令的源操作数的寻址方式:MOV AX,1234HMOV AX,BXMOV AX,[BX]MOV AX,TABLE;TABLE ;TABLE是一个变量名MOV AX,[1234H]MOV AX,[BX+1234H]MOV AX,[BP][SI]MOV AX,[BX+SI-1234H]【解】:MOV AX,1234H 立即寻址MOV AX,BX 寄存器寻址MOV AX,[BX] 寄存器间接寻址MOV AX,TABLE ;TABLE是一个变量名直接寻址方式MOV AX,[1234H] 直接寻址方式MOV AX,[BX+1234H] 寄存器相对寻址MOV AX,[BP][SI] 基址变址寻址MOV AX,[BX+SI-1234H] 相对地址变址寻址3.3 设:(DS)=2000H,(BX)=0100H,(SS)=1000H,(BP)=0010H,TABLE的物理地址为2000AH,(SI)=0002H。
求下列每条指令源操作数的存储单元地址:MOV AX,[1234H]MOV AX,[BX]MOV AX,TABLE[BX]MOV AX,[BP]MOV AX,[BP][SI]【解】:存储单元地址:(DS)×10H + EA =2000H×10H+1234H=21234H存储单元地址:(DS)×10H +(BX)=2000H×10H+0100H=20100H存储单元地址:(DS)×10H+EA=2000H×10H+0100H+000AH=2010AH存储单元地址:(SS)×10H+EA=1000H×10H+0010H=10010H储单元地址:(SS)×10H+EA=1000H×10H+0010H+0002H =10012H3.4 设ARRAY是字数组的首地址,写出将第5个字元素取出送AX寄存器的指令,要求使用以下几种寻址方式:⑴直接寻址⑵寄存器间接寻址⑶寄存器相对寻址⑷基址变址寻址【解】:(1)直接寻址(2)寄存器间接寻址(3)寄存器相对寻址(4)基址变址寻址MOV AX, ARRAY+8 MOV BX, ARRAY+8 MOV BX, 8 LEA BX, ARRAYMOV AX, [BX] MOV AX, ARRAY[BX] MOV SI, 8MOV AX,[BX+SI]3.7 下列每组指令有何区别?(1)MOV AX,1234H 立即寻址MOV AX,[1234H] 直接寻址(2)MOV AX,TABLE 直接寻址MOV AX,[TABLE] 直接寻址(3)MOV AX,TABLE 将TABLE的内容送AXLEA AX,TALBE 将TABLE的偏移量送AX(4)MOV AX,BX 寄存器寻址MOV AX,[BX] 寄存器间接寻址3.8 MOV CS,AX指令正确吗?错误。
不能用CS作目的操作数。
3.9 写一指令序列将3456H装入DS寄存器。
MOV AX,3456HMOV DS,AX不能将立即数直接送段寄存器,所以得间接。
3.10 若正在访问堆栈的03600H单元,则SS和SP的值各是多少?03600H=SS*10H+SP所以有多个答案。
例如:SS=350H SP=0HSS=300H SP=600H3.11 若(SS)=2000H,(SP)=000AH,先执行将字数据1234H和5678H压入堆栈的操作,再执行弹出一个字数据的操作,试画出堆栈区及SP的内容变化过程示意图(标出存储单元物理地址)3.13 能用ADD指令将BX内容加到ES中去吗?不能。
算术运算中段寄存器不得作为目的操作数。
3.14 INC [BX]指令正确吗?错误。
需指明存储器操作数的类型是字节还是字。
3.15 若(AX)=0001H,(BX)=0FFFFH,执行ADD AX,BX之后,标志位ZF、SF、CF、OF各是什么?ZF=1 SF=0 CF=1 OF=03.16 写一指令序列完成将BL中的数据除以CL中的数据,再将其结果乘以2,并将最后为16位数的结果存入DX寄存器中。
MOV AL,BLCBWDIV CLMOV CL,2MUL CLMOV DX,AX3.17 写一指令序列,完成将AX寄存器的最低4位置1,最高3位清0,第7、8、9位取反,其余位不变的操作。
OR AX,000FHAND AX,1FFFHXOR AX,0380H第四章⑴ADD V AR1,V AR2 ⑵SUB AL,V AR1 ⑶JMP LAB[SI] ⑷JNZ V AR1⑸JMP NEAR LAB【解】:⑴ADD V AR1,V AR2ADD两个操作数不能同时为存储单元,MOV AX, V AR1ADD AX, V AR2⑵SUB AL,V AR1两个操作数不匹配SUB AX, V AR1⑶JMP LAB[SI]LAB与[SI]不能相加JMP WORD PTR [SI]⑷JNZ V AR1JNZ后面应是标号,不应是变量JNZ LAB⑸JMP NEAR LAB缺少PTR运算符JMP NEAR PTR LAB4.5 假设程序中的数据定义如下:PARTNO DW ?PNAME DB 16 DUP(?)COUNT DD ?PLENTH EQU $-PARTNO问PLENTH的值为多少? 它表示什么意义?PLENTH的值为22,表示从PARTNO开始到PLENTH之前所含字节数4.6 有符号定义语句如下:BUFF DB 1,2,3,‘123’EBUFF DB 0L EQU EBUFF-BUFF问L的值是多少?L值为6。
BUFF DB 1,2,3,‘123’L EQU $-BUFFEBUFF DB 04.9给出等值语句如下:ALPHA EQU 100BETA EQU 25GAMMA E QU 2下列表达式的值是多少?⑴ALPHA*100+BETA ⑵ALPHA MOD GAMMA+BETA ⑶(ALPHA+2)*BETA-2 ⑷(BETA/3) MOD 5⑸(ALPHA+3)*(BETA MOD GAMMA) ⑹ALPHA GE GAMMA⑺BETA AND 7 ⑻GAMMA OR 3【解】:⑴ALPHA*100+BETA100×10025=10025⑵ALPHA MOD GAMMA+BETA100/(25+2)=19⑶(ALPHA+2)*BETA-2(100+2)*25=2548⑷(BETA/3) MOD 5(25/3) MOD 5=3⑸(ALPHA+3)*(BETA MOD GAMMA)(100+3)*(25 MOD 2)=103⑹ALPHA GE GAMMA100 GZ GAMMA=0FFFFH⑺BETA AND 725 AND 7=1⑻GAMMA OR 32 OR 3=34.10对于下面的数据定义,三条MOV指令分别汇编成什么?(可用立即数方式表示) TABLEA DW 10 DUP(?)TABLEB DB 10 DUP(?)TABLEC DB ’1234’┇MOV AX,LENGTH TABLEAMOV BL,LENGTH TABLEBMOV CL,LENGTH TABLEC【解】:MOV AX,LENGTH TABLEA MOV AX, OOOAHMOV BL,LENGTH TABLEB MOV BL, 0AHMOV CL,LENGTH TABLEC MOV CL, O1H4.11 对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么? FLDB DB ?TABLEA DW 20 DUP(?)TABLEB DB ‘ABCD’⑴MOV AX,TYPE FLDB ⑵MOV AX,TYPE TABLEA ⑶MOV CX,LENGTH TABLEA ⑷MOV DX,SIZE TABLEA⑸MOV CX,LENGTH TABLEB【解】:(1) MOV AX,TYPE FLDB (AX)= 1(2) MOV AX,TYPE TABLEA(AX)= 2(3) MOV CX,LENGTH TABLEA(CX)= 20(4) MOV DX,SIZE TABLEA(DX)= 40(5) MOV CX,LENGTH TABLEB (CX)= 1第五章5.1简述8086引脚信号M/IO*、DT/R*、RD*、WR*、ALE、DEN*、BHE*/S7的作用。
M/IO* 若为1访问存储器,否则IODT/R* 若为1控制缓冲器方向为发送,否则接收RD* 读引脚WR* 写引脚ALE 地址锁存引脚DEN* 控制缓冲器能否工作BHE*/S7 T1总线高允许/状态5.2 什么是指令周期?什么是总线周期?什么是时钟周期?指令周期:执行一条指令所需要的时间。
总线周期:CPU的每一个这种信息输入、输出过程需要的时间。
时钟周期:时钟脉冲的重复周期。
1指令周期=N总线周期1总线周期=至少4个时钟周期。