汇编语言程序设计

已知程序段如下: MOV AX,1234H;(AX)=1234H,标志位不变 MOV CL,4;(AX)和标志位都不变 ROL AX,CL;(AX)=2341H,CF=1,SF和ZF不变 DEC AX;(AX)=2340H,CF=1不变,SF=0,ZF=0 MOV CX,4;(AX)和标志位都不变 MUL CX;(AX)=8D00H,CF=OF=0,其它标志无定义 INT 20H 程序结束时,AX和DX的内容是什么?

题目

已知程序段如下: MOV AX,1234H;(AX)=1234H,标志位不变 MOV CL,4;(AX)和标志位都不变 ROL AX,CL;(AX)=2341H,CF=1,SF和ZF不变 DEC AX;(AX)=2340H,CF=1不变,SF=0,ZF=0 MOV CX,4;(AX)和标志位都不变 MUL CX;(AX)=8D00H,CF=OF=0,其它标志无定义 INT 20H 程序结束时,AX和DX的内容是什么?

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

执行下面的指令 MOV AX, 1234H MOV DX, 4 MUL DX AX寄存器中的数据是( )。

A.4936H

B.48DOH

C.2340H

D.0234H


正确答案:B
解析:执行乘法运算时,寄存器AX 中最初存放的是被乘数,计算完成后,积将被保存在AX寄存器中。

第2题:

执行下列指令后: MOV AX, 1234H MOV CL, 4 ROL AX, CL DEC AX MOV CX, 4 MUL CX HLT 寄存器AH的值是( )。

A.92H

B.8CH

C.8DH

D.OOH


正确答案:C

第3题:

如果TABLE为数据段中0032单元的符号名,其中存放的内容为1234H,当执行指令“MOV AX,TABLE”(AL)=【 】。


正确答案:1234H
1234H

第4题:

执行下列指令后: MOV AX,1234H MOV CL,4 ROL CL DEC AX MOV CX,4 MUL CX HLT (AH)=( )

A.92H

B.8CH

C.8DH

D.00H


正确答案:C

第5题:

有下列指令: MOV AX,1234H MOV CL,4 ROL AX,CL DEC AX MOV CX,4 MUL CX HLT 执行这些指令后,寄存器AL的值是( )

A.60H

B.00H

C.04H

D.AOH


正确答案:B
解析:在本题中,开始时AX寄存器中的内容是1234H,经过ROLAX,CL命令后,AX=2341H。ROL是循环左移。然后再DECAX后,AX=2340H。MUL是乘法指令,它隐含了目的操作数AX,乘积为DX:AX。所以执行完MULCX指令后,AX=8D00H。那么AL的值是00H。

第6题:

下列MOV指令都是错误的,请指出错误原因。

(1)MOV ES, 1234H

(2)MOV AL, 300

(3)MOV [SP], AX

(4)MOV AX, BX+DI

(5)MOV 20H, AH


正确答案:(1)立即数不能直接赋给段寄存器。 (2)立即数300超过8位不能赋给8位寄存器AL。 (3)SP不能作为间接寻址寄存器寻址。 (4)两个寄存器不能相加。 (5)立即数不能作为目标操作数。
(1)立即数不能直接赋给段寄存器。 (2)立即数300超过8位,不能赋给8位寄存器AL。 (3)SP不能作为间接寻址寄存器寻址。 (4)两个寄存器不能相加。 (5)立即数不能作为目标操作数。 解析:本问题主要考查汇编语言的基础知识。在8086的指令系统中,应用通用传送指令时,需要注意以下几点:
传送指令可传送8位数据,也可传送16位数据,具体取决于指令中涉及的寄存器是8位还是16位,也取决于立即数的形式。
传送指令中总是即含源操作数,又含目的操作数,两者之中至少有一个是用寄存器来指出的,这可减少指令长度。因此,一个立即数不能直接送直接寻址的内存单元。交换指令(XCHG)两个操作数都不能是立即数。
传送指令不能在两个内存单元之间直接传送数据。
在传送指令中,寄存器即可以作为源操作数,也可以作为目的操作数,但CS寄存器不能作为目的操作数,换句话说,这个寄存器的值不能随意修改。而IP寄存器即不能作源操作数,也不能作为目的操作数。
用BX、SI、DI来间接寻址时,默认的段寄存器位DS,而用BP来间接寻址时,默认的段寄存器为SS。
8086系统规定,凡是遇到给SS寄存器赋值的传送指令时,系统会自动禁止外部中断,等到本条指令和下条指令执行后,又自动恢复对SS寄存器赋值前的中断开放状态。这样做是为了允许程序员连续用两条指令分别对SS和SP寄存器赋值,同时又防止堆栈空间变动过程中出现中断。了解这点后,就应注意在修改SS和SP的指令之间不要插入其他指令。
除了一些直接影响FLAGS的指令外,一般传送指令不改变标志寄存器的内容。
立即数不能直接送段寄存器DS、ES以及SS,要用通用寄存器或存储单元作桥梁。
因此,指令“MOVES,1234H”的错误在于立即数直接赋给了段寄存器;指令“MOV AL,300”的错误在于立即数300超过8位,不能赋给8位寄存器AL;指令“MOV[SP],AX”的错误在于SP不能作为间接寻址寄存器寻址:指令“MOV AX,BX+DI”的错误在于两个寄存器不能相加;指令“MOV 20H,AH”的错误在于立即数不能作为目标操作数。

第7题:

执行完下列指令后: MOV AX,1234H MOV CL,4 ROL AX, CL DEC AX MOV CX,4 MUL CX HLT (AL)=( )。

A.60H

B.00H

C.04H

D.A0H


正确答案:B

第8题:

如果TABLE为数据段中0032单元的符号名,其中存放的内容为1234H,当执行指令“MOV AX,TABLE"(AX)=______;而执行指令“LEA AX,TABLE"后,则(AX)=______。


正确答案:1234H    0032H
1234H  ,  0032H

第9题:

执行下面的指令序列后,AX寄存器中的数据是( )。 MOV AX,1234H MOV BX,4 MUL BX,

A.4936H

B.48DOH

C.2340H

D.0234H


正确答案:B

第10题:

执行下面的程序段 MOV SP,2000H MOV Ax,OFOH MOV SI,1234H MOV DX,5678H PUSH SI POP DI SHL DX,1 TEST AX,DX PUSH DX HLT 之后,DH内容所在程序段的偏移地址是( )

A.1FFFH

B.1FFEH

C.1FFDH

D.1FFCH


正确答案:A
解析:一个字在寄存器中存储时低字节在前,高字节在后;在堆栈中存储时,高字节在高地址,低字节在低地址,即高字节在下,低字节在上;每次入栈操作SP-2,每次出栈操作SP+2。在本题中,经过PUSHSI后,SP=IFFEH,而又执行POPDI后,SP=2000H,所以最后执行PUSHDX后,SP=1FFEH,这时SP指向DL所在的偏移地址,而DH的偏移地址是1FFFH。