计算机硬件技术基础——作业四(草稿)

一. 单项选择题(答案填入上表,每题1分,共35分)

  1. 在下面四组寄存器中,第(  )组都可用于对存储器间接寻址方式的寄存器。 D
    A. AX,BX,CX,IP; B. BX,SP,DX,SI C. IP,SP,BP,AX D. BP,BX,SI,DI

操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。

  1. 含有立即数的指令中,该立即数被存放在(  )。 B
    A. 累加器中
    B. 指令操作码后的内存单元中
    C. 指令操作码前的内存单元中
    D. 由该立即数所指定的内存单元中

紧跟操作码

  1. 寄存器间接寻址方式中,操作数在(  )中。 C
    A. 通用寄存器 B. 堆栈
    C. 存储单元 D. 段寄存器
  2. 下列指令中,有语法错误的指令是(  )。 D
    A. MOV AX,[1000H] B. ADD AX,1000H C. MOV [1000H],AL D. MOV 1000H,AX

MOV的目标不能是直接数

  1. 8086/8088中除(  )两种寻址方式外,其它各种寻址方式的操作数均在存储器中。C
    A.立即寻址和直接寻址 B.寄存器寻址和直接寻址 C.立即寻址和寄存器寻址 D.立即寻址和间接寻址

立即寻址是立即数跟在指令后面
寄存器寻址是操作数在CPU内
都不需要与存储器联系

  1. 指令( )的源操作数的寻址方式为直接寻址。 C
    A. MOV [2000H],AL B. IN AL,DX C. XOR AL,[2000H] D. MOV AX,2000H

直接寻址就是以位移量方式直接给出存储器操作数的偏移地址。
注意是源操作数

  1. 下列指令中,执行速度最快的指令是(  )A
    A. ADD AX,10 B. ADD AL,[SI+10H]
    C. PUSH AX D. ADD AX,[BX]

A是立即数寻址,最快

  1. 下列指令中,不影响进位的指令是(  )C
    A. ADD AX,BX B. MUL BL C. INC BX D.SUB AL,BH

INC(加一指令)只影响溢出标志OF、符号标志SF、零标志ZF、辅助进位标志AF、奇偶性标志PF五个标志,而不影响CF

  1. 执行PUSH AX指令后,堆栈指针SP的内容: (  )B
    A.减1 B. 减2 C. 加1 D. 加2

堆栈按字操作

  1. 下面对PUSH指令描述正确的是(  )。B
    A. PUSH只能将字节型数据压入堆栈。 B. PUSH只能将字型数据压入堆栈。
    C. PUSH只能将双字节型数据压入堆栈。 D. PUSH可对任何类型数据操作。

  2. 若CX=3,AX=1,执行完SHL AX,CL指令后,AX=(  )。D
    A. 1 B. 2 C.4 D. 8

CX=3 其实就是CL=3,CH还是0
在这里插入图片描述
AX=0000 0001
向左移位三次
0000 1000

  1. 8086中(  )的源操作数和目的操作数可同时为存储器数。D
    A. 数据传送指令 B. 算术. 逻辑运算指令 C. 控制转移指令 D. 串操作指令

只有串操作指令可以两者都为存储器数

  1. 下列指令中隐含使用寄存器SI的是( ) B
    A HLT B. CMPSB C. XLAT D. NOT

为缩短指令长度,串操作指令均采用隐含寻址方式,源数据串一般在当前数据段中,即由DS段寄存器提供段地址,其偏移地址必须由源变址寄存器SI提供。

  1. 下列指令中,有语法错误的指令是(  )。D
    A. MOV AX,[BX][SI] B. LEA DI,[2000H] C. OUT DX,AL D. SHL BX,2

移位指令当count不为1时需要放在CL寄存器中

  1. 将AL中带符号数乘10送AL,正确的程序段是(  )。A
    A. SAL AL,1 B. ADC AL,AL
    MOV BL,AL MOV BL,AL
    SAL AL,1 ADD AL,AL
    SAL AL,1 ADD AL,AL
    ADD AL,BL ADD AL,AL
    C. MOV CL,4 D. ADD AL,AL
    MOV BL,AL ADD AL,AL
    SAL AL,CL ADD AL,AL
    ADD AL,BL ADD AL,AL
    ADD AL,AL

SAL是左移,左移一次是乘二
设AL初值为x,A先得到2x并存在BL中,再得到8x然后加上2x,即10x

  1. 假定SS=2000H,SP=0100H,AX=2107H,执行指令PUSH AX后,存放数据21H的物理地址是( )D
    A. 20102H B. 20101H
    C. 200FEH D. 200FFH

高位字节放在高地址
21放在2000H16+0100H-1即200FFH
低位字节放在低地址
07放在2000H
16+0100H-2即200FEH

  1. 设SS=4000H,SP=1000H,AL=78H,AH=0FCH,DX=5609H。现要求把AX和DX中的内容压入堆栈,第(  )示图中堆栈内容是正确的。A
    在这里插入图片描述

高高低低

  1. 在串传送指令MOVSB中,源串操作数和目的串操作数使用的数据段和偏移地址指针寄存器为(  )。A
    A. DS和SI; ES和DI B. DS和DI; ES和SI C. ES和SI; DS和DI D. DS和SI; DS和DI
  2. (  )寻址方式的跨段前缀不可省略。 A
    A. DS:BP B. DS:SI
    C. DS:DI D. SS:BP

系统默认BP寻址的数据存在堆栈段SS中,其他的默认存在DS中,A的情况很显然并不是默认情况所以不可忽略

  1. 若要检查BX寄存器中的D12位是否为1,应该用(  )指令。B
    在这里插入图片描述

只是检查,不能改变BX中的值,所以是TEST(按位与,但不返回结果)

  1. 执行下列指令后,AX=(  )。A
    MOV AX,1234H
    MOV CL,4
    ROL AX,CL
    DEC AX
    MOV CX,4
    MUL CX
    HLT
    A. 8D00H B. 9260H C. 8CAOH D. 0123H

1.AX=0001 0010 0011 0100
2.ROL 循环左移,CL控制次数,左移四次
0010 0011 0100 0001
3.DEC 减一
0010 0011 0100 0000
4.MUL 被乘数隐含在AX中,
即0010 0011 0100 0000
CX=0000 0000 0000 0100
AX*CX=
0000 0000 0000 0000 1000 1101 0000 0000
高十六位存在DX,低十六位存在AX
所以AX=1000 1101 0000 0000
即8D00H

  1. 下列程序段可用指令(  )来完成该功能。 D
    NEXT: MOV AL,[SI]
    MOV ES:[DI],AL
    INC SI
    INC DI
    LOOP NEXT
    A. REP LODSB B. REP STOSB C. REPE SCASB D. REP MOVSB
  2. 设AL=-68,BL=86,执行SUB AL,BL指令后,正确的结果是(  )。C
    A. CF=1 B. SF=1 C. OF=1 D. ZF=1

68=0100 0100
-68=1011 1100
86=0101 0110
-86=1010 1010
-68-86=
0110 0110
CF=1 SF=0 OF=1 ZF=0
另外注意
CF是无符号数溢出标志,OF是有符号数溢出标志。
所以有符号数讨论CF是没有意义的,因为不同的算法可能CF结果不同
比如说上面用的是-68的补码与-86的补码相加获得结果
我们也可以用-68的补码减去86的补码得到:
0110 0110 此时CF=0

详细请看溢出OF与进位CF的判别

  1. 下列4条指令中,有几条指令需要使用DX寄存器(  )。 A
    MUL BX; DIV BL; IN AX,20H; OUT 20H,AL;
    A.1条 B.2条 C.3条 D.4条

MUL s 结果如果是32位,则高16位放入DX中
DIV 字节除法 商存于AL,余数存于AH;字除法商存于AX,余数存于DX;

  1. 下列指令中,不影响标志寄存器的标志位的指令是(  )。C
    A.SUB AX,BX B.ROR AL,1 C.JNC Label D.INT n

JNC 条件跳转指令,不影响标志位

  1. 下列指令经汇编后,机器指令代码最长的是(  )。 A
    A.MOV AX,0 B.SUB AX,AX C.XOR AX,AX D.MUL BX

MOV指令所占字节数:寄存器与数据之间传递是占三个字节,寄存器之间传递是两个字节。
其余都为两字节

  1. 假设AX和BX寄存器中存放的是有符号整数,为了判断AX寄存器中的数据是否大于BX寄存器中的数据,应采用指令序列(  )。D

JC/JNC 有/无借位/进位
JA 无符号数-高于
JG 带符号数-大于

  1. 循环指令LOOPNZ终止循环的条件是(  )。 B
    A. CX=0,且ZF=0 B. CX=0,或ZF=1
    C. CX!=0,且ZF=0 D. CX!=0,或ZF=1

  2. 对寄存器AX的内容乘以4的正确指令序列是(  )。 B

  3. 设DH=10H,执行NEG DH指令后,正确的结果是(  )。 D
    A. DH=10H CF=1 B. DH=0F0H CF=0 C. DH=10H CF=0 D. DH=0F0H CF=1

NEG d ; d <— d ‾ \overline{\text{d}} d+1
DH=0001 0000
DH=1110 1111 +1 =1111 0000
CF通常置1

  1. 下列传送指令中有语法错误的是(  )。A
    A. MOV CS,AX B. MOV DS,AX C. MOV SS,AX D. MOV ES,AX

代码段寄存器不能用MOV指令来改变

  1. 下面指令执行后,改变AL寄存器内容的指令是(  )。 D
    A. TEST AL,02H B. OR AL,AL C. CMP AL,BL D. AND AL,BL

CMP d,s ; d-s,只置标志位

  1. 执行除法指令后,影响的标志位是(  )。D
    A. CF,OF B. SF,ZF
    C. CF,OF,SF D. AF,CF,OF,PF,SF,ZF都不确定

  2. 执行下面指令序列后,结果是(  )。 A
    MOV AL,82H
    CBW
    A. AX=0FF82H B. AX=8082H C. AX=0082H D. AX=0F82H

82H=1000 0010
CBW 扩展符号位

  1. AL和VAR字节单元中分别存放一个带符号数,执行CMP AL,VAR时,如AL>VAR,那么溢出位和符号位的关系是(  )。 A
    A. OF=SF B. OF≠SF C. OF=SF=1 D. OF=SF=0

CMP d,s ; d-s,只置标志位
溢出符号OF与符号标志SF异或,若为1则d<s; 若为0则d>=s
当AL大于0、VAR大于0时,OF=0,SF=0;
当AL大于0、VAR小于0时,OF=1,SF=1;
当AL小于0、VAR小于0时,OF=0,SF=0。
故结果为OF=SF,选A。

二. 填空题(36分)
1.指令JMP NEAR PROG1,在程序代码段中的偏移地址为2013H(这是该指令第一字节的偏移地址)。组成该指令的三字节机器码为E91234H(其中E9H为操作码)。执行该指令后,程序转移去的偏移地址为 5428 H。

偏移地址=当前偏移地址+字节数+位移量
=2013+0003+3412=5428H
注意位移量存储时是高高低低

2.ADD AX,BL指令出错的原因是________ ;MOV [DI],[SI]指令出错的原因是________;INC 2030H指令出错的原因是________;OUT 378H,AL指令出错的原因是________。

  1. 参与运算的位数不同
  2. MOV两者不能同时为存储器
  3. INC 操作数不能是立即数
  4. OUT 后跟立即数的范围是0~255,378H超出范围。

3.设堆栈指针SP=6318H,此时若将AX、 BX.、CX、DX依次推入堆栈后,SP=______。

入栈SP-2
SP=6310H

4.已知BX=7830H,CF=1,执行指令:ADC BX,87CFH之后,BX= ,标志位的状态分别为CF= ,ZF= , OF= ,SF= 。 (5分)

ADC 带进位符加法
1.BX=7830+87CF+1=0000
0111 1000 0011 0000+
1000 0111 1100 1111+
0000 0000 0000 0001
——————————————
0000 0000 0000 0000
CF=1 ZF=1 SF=0
OF=0
最高位与此高位都进位了,所以没有溢出

5.SP=1000H,SS=3000H,(31000H)=2000H,DS=4000H,BX=1200H,则 POP [BX] 指令执行完后SP= H , BX= H,(41200H)= H(一个字的内容)

POP SP加二 1002H
BX=1200H
(41200H)=2000H

6.假设BX= 0449H,BP= 0200H,SI= 0046H,SS= 2F00H,(2F246H)= 7230H则执行XCHG BX,[BP+SI]指令后,BX=_____________

BP+SI=0246
SS * 16 + 0246 = 2F246 H
XCHG后,BX=7230H

7.假设DS=3000H,BX=0808H,(30808H)=012AAH,(3080AH)=0BBCCH,当执行指令“LES DI,[BX]”后,DI=_____________ ES=_____________

LES 不仅会取偏移地址,还会取段地址,一共四个字节,前两个字节(即偏移地址)传送到指定的通用寄存器,后两个(即段地址)传送到DS段寄存器(LDS)/ES段寄存器(LES)
DI=012AAH
ES=0BBCCH

8.DS=0F800H,DI=180AH,CX=0105H,(0F980AH)=0064H则指令执行SAR [DI], CL后,(0F980AH)=____________ H
CF=_____________

CL=05
SAR:[DI] 右移5位
0000 0000 0110 0100——>
0000 0000 0000 0011
即0003H
CF=0

四.读程序,指出结果。(34分)
1.执行下面的程序段后,AX的内容是_____________,BX的内容是_____________。
MOV AX,1234H
MOV BX,5678H
PUSH AX
PUSH BX
POP AX
POP BX

AX=5678H BX=1234H

2.执行下列指令序列后,完成的功能是将(DX,AX)的值_____________。
MOV CX,4
NEXT: SHR DX,1
RCR AX,1
LOOP NEXT

DX逻辑右移四位、AX带进位循环右移四位
DX和AX组成的32位的二进制(双字)右移四位

3.执行下面的程序段后,AL的内容是_____________,BL的内容是_____________。
MOV AL,20H
TEST AL,80H
JNZ DO1
MOV BL,0
JMP DO2
DO1: MOV BL,1
DO2: HLT

AL=0010 0000
TEST:0010 0000 ∧ 1000 0000 = 0000 0000
CF=OF=SF=0 ZF=1
JNZ不运行
BL=0
JMP DO2
HLT

4.下面程序段执行后,标志位CF=,OF=
MOV AL,-64
MOV BL,-70
ADD AL,BL

64: 40H 0100 0000 —> - 64:1100 0000
70: 46H 0100 0110 —> - 70:1011 1010
-64-70= 0111 1010
CF=1;OF=1

5.下面程序段执行后,AX=_____________。
MOV SI,0
MOV DI,0
MOV CX,60
REP MOVSB
MOV AX,SI

重复次数:60
SI=60D=0011 1100B = 3CH
AX=3CH

6.下面程序段执行后,AX=_____________
BX=_____________
MOV AX,92H
MOV BX,10H
ADD BX,70H
ADC AX,BX
PUSH AX
MOV AX,20H
POP BX
ADD AX,BX

AX=0132H,BX=0112H
在这里插入图片描述

7.设寄存器AL、BL、CL中内容均为76H, 执行下述指令后
AL=__________
BL=__________
CL=__________。
XOR AL,0FH
AND BL,0FH
OR CL,0FH

AL=BL=CL=0111 0110
0FH= 0000 1111
AL=0111 1001
BL=0000 0110
CL=0111 1111

8.已知AX=0A33AH,DX=0F0F0H,执行下述指令序列后,
AH=__________
AL=__________
AND AH,DL
XOR AL,DH
NEG AH
NOT AL

AX= 1010 0011 0011 1010
DX=1111 0000 1111 0000
AND AH,DL:
AH=1010 0011 ∧ 1111 0000 = 1010 0000
XOR AL,DH :
AL=0011 1010 ⊕ 1111 0000= 1100 1010
NEG AH : AH—>0110 0000
NOT AL : AL—>0011 0101

9.源程序如下:
MOV AL,0B7H
AND AL,0DDH
XOR AL,81H
OR AL,33H
JP LAB1
JMP LAB2
试问:

  1. 执行程序后AL=_______

  2. 程序将转到哪一个地址执行:__________

AL= 1011 0111 + 1101 1101= 1001 0100
AL=1001 0100 ⊕ 1000 0001=0001 0101
AL=0001 0101 ∨ 0011 0011=0011 0111
JP 奇偶性为1时跳转
AL最后的值0011 0111有五个1,奇偶性为奇,值为零

  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值