微机原机题库分析选择题

发布时间 : 星期四 文章微机原机题库分析选择题更新完毕开始阅读

相对基址变址寻址,EA = (BX)+(SI)+[VAL]= 0100H+00A0H+0050H = 01F0H,PA =(DS)×10H+EA = 2000H×10H+01F0H = 201F0H

05 0026 0302 0302 02 9 8086/8088指令系统 给定寄存器及存储单元的内容为:(DS) = 2000H,(BX) = 0100H,(SI) = 0002H,(20100) = 32H,(20101) = 51H,(20102) = 26H,(20103) = 83H,(21200) = 1AH,(21201) = B6H,(21202) = D1H,(21203) = 29H。试说明下列各条指令执行完后,AX寄存器中保存的内容是什么。 (1) MOV AX,1200H (2) MOV AX,BX (3) MOV AX,[1200H] 解:

(1) MOV AX,1200H ;执行后,(AX)= 1200H (2) MOV AX,BX ;执行后,(AX)= (BX)= 0100H (3) MOV AX,[1200H]

直接寻址,EA = [VAL] = 1200H,PA = (DS)×10H+EA = 2000H×10H+1200H = 21200H,执行后,(AX)= B61AH

05 0027 0302 0302 02 9 8086/8088指令系统 给定寄存器及存储单元的内容为:(DS) = 2000H,(BX) = 0100H,(SI) = 0002H,(20100) = 32H,(20101) = 51H,(20102) = 26H,(20103) = 83H,(21200) = 1AH,(21201) = B6H,(21202) = D1H,(21203) = 29H。试说明下列各条指令执行完后,AX寄存器中保存的内容是什么。 (1) MOV AX,[BX] (2) MOV AX,1100H[BX] (3) MOV AX,[BX][SI] 解:

(1) MOV AX,[BX] EA = (BX)= 0100H,PA =(DS)×10H+EA= 2000H×10H+0100H= 20100H,执行后,(AX)= 5132H

(2) MOV AX,1100H[BX] EA =(BX)+1100H = 0100H+1100H = 1200H,PA = (DS)×10H+EA = 2000H×10H+1200H = 21200H,执行后,(AX)= B61AH (3) MOV AX,[BX][SI] EA =(BX)+(SI)= 0100H+0002H= 0102H,PA= (DS)×10H+EA = 2000H×10H+0102H = 20102H,执行后,(AX)= 29D1H

05 0028 0302 0302 03 8 8086/8088指令系统

分析下列指令的正误,对于错误的指令要说明原因并加以改正。 (1) MOV AH,BX (2) MOV [BX],[SI]

(3) MOV AX,[SI][DI] (4) MOV MYDAT[BX][SI],ES:AX 解:

(1) MOV AH,BX

错误,寄存器类型不匹配,可改为MOV AX,BX (2) MOV [BX],[SI]

错误,两个操作数不能都为存储单元,可改为MOV BX,[SI]或MOV [BX],SI (3) MOV AX,[SI][DI]

错误,寻址方式中只能出现一个变址寄存器,可改为MOV AX,[BX][DI]。 (4) MOV MYDAT[BX][SI],ES:AX

错误,AX签不能有段跨越前缀,去掉ES:,改为MOV MYDAT[BX][SI],AX

37

05 0029 0302 0302 03 8 8086/8088指令系统

分析下列指令的正误,对于错误的指令要说明原因并加以改正。

(1) MOV BYTE PTR[BX],1000 (2) MOV BX,OFFSET MAYDAT[SI] (3) MOV CS,AX (4) MOV DS,BP 解:

(1) MOV BYTE PTR[BX],1000 错误,1000超出字节空间存储范围

(2) MOV BX,OFFSET MAYDAT[SI] ;正确 (3) MOV CS,AX

错误,MOV指令CS不能做目的操作数,可改为MOV DS,AX (4) MOV DS,BP ;正确

05 0030 0302 0302 03 12 8086/8088指令系统

设VAR1、VAR2为字变量,LAB为标号,分析下列指令的错误之处并加以改正。 (1) ADD VAR1,VAR2 (2) MOV AL,VAR2 (3) SUB AL,VAR1 (4) JMP LAB[SI] (5) JNZ VAR1 (6) JMP NEAR LAB 解:

(1) ADD VAR1,VAR2

错误,两个操作数不能都为存储单元,可改为 MOV BX,VAR2 ADD VAR1,BX

(2) MOV AL,VAR2

错误,数据类型不匹配,可改为MOV AX,VAR2 (3) SUB AL,VAR1

错误,数据类型不匹配,可改为SUB AX,VAR1 (4) JMP LAB[SI]

错误,寄存器相对寻址形式中不能用标号做位移量,可改为JMP VAR1[SI] (5) JNZ VAR1

错误,条件跳转指令只能进行段内短跳转,所以后面只能跟短标号。可改为JNZ LAB (6) JMP NEAR LAB

错误,缺少运算符PTR,可改为JMP NEAR PTR LAB

05 0031 0302 0302 03 6 8086/8088指令系统 写出能够完成下列操作的8086CPU指令。 (1) 把4629H传送给AX寄存器; (2) 从AX寄存器中减去3218H; (3) 把BUF的偏移地址送入BX中。 解:

(1) MOV AX,4629H (2) SUB AX,3218H (3) LEA BX,BUF

38

05 0032 0302 0302 03 10 8086/8088指令系统 根据以下要求写出相应的汇编语言指令。

(1) 把BX和DX寄存器的内容相加,结果存入DX寄存器中;

(2) 用BX和SI的基址变址寻址方式,把存储器中的一个字节与AL内容相加,并保存在AL寄存器中;

(3) 用寄存器BX和位移量21B5H的变址寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器单元中;

(4) 用位移量2158H的直接寻址方式把存储器中的一个字与数3160H相加,并把结果送回该存储器中;

(5) 把数25H与(AL)相加,结果送回寄存器AL中。 解:

(1) ADD DX,BX

(2) ADD AL,[BX][SI] (3) ADD 21B5H[BX],CX

(4) ADD WORD PTR [2158H],3160H (5) ADD AL,25H

05 0033 0302 0302 03 9 8086/8088指令系统

写出将首地址为BLOCK的字数组的第6个字送到CX寄存器的指令序列,要求分别使用以下几种寻址方式:

(1) 以BX的寄存器间接寻址 (2) 以BX的寄存器相对寻址 (3) 以BX、SI的基址变址寻址 解:

(1) LEA BX,BLOCK+10 MOV CX,[BX]

(2) LEA BX,BLOCK MOV CX,10[BX] (3) LEA BX,BLOCK MOV SI,10

MOV CX,[BX][SI]

05 0034 0402 0402 01 10 汇编语言及其程序设计

下面是将内存一字节数据高4位和低4位互换并放回原位置的程序,找出错误并改正。 DATA SEGMENT DD1 DB 23H DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX

LEA SI,OFFSET DD1 MOV AL,[SI] MOV CL,4

39

RCR AL,CL MOV [SI],AL MOV AH,4CH INT 21H CODE END END START 解:

程序第8行错误:LEA SI,OFFSET DD1,应去掉OFFSET;

程序第10行错误:RCR AL,CL,应使用ROR或ROL,改为ROR AL,CL

05 0035 0402 0402 02 8 汇编语言及其程序设计

分析汇编语言源程序应该由哪些逻辑段组成?各段的作用是什么?语句标号和变量应具备哪3种属性? 解:

汇编语言源程序应该由若干个逻辑段组成,可以有若干个数据段、代码段、堆栈段和附加数据段,至少要有一个代码段。各段的作用如下: (1)代码段用来存放程序和常数。 (2)数据段用于数据的保存。

(3)堆栈段用于保护数据,尤其在子程序调用、中断过程中进行现场信息保护。 (4)附加数据段用于数据的保存。

语句标号和变量应具备的3种属性:段属性、偏移属性和类型属性。

05 0036 0402 0402 02 6 汇编语言及其程序设计 执行完下列程序后,回答指定的问题。 MOV AX,0 MOV BX,2 MOV CX,50

LP:ADD AX,BX ADD BX,2 LOOP LP

问:(1) 该程序的功能是 。 (2) 程序执行完成后,(AX)= 。 解:

(1)完成0到100间所有偶数求和的功能。 (2)2550

05 0037 0402 0402 03 6 8086/8088指令系统 指出下列指令的错误:

(1) MOV AX,OFFSET [SI] (2) MOV CS,AX (3) MOV DS,BP 解:

(1) OFFSET只用于简单变量,应去掉 (2) CS不能作为目的寄存器

(3) 段地址不能直接送入数据段寄存器

40

05 0038 0402 0402 03 6 8086/8088指令系统 指出下列指令的错误:

(1) MOV AX,[BX][BP] (2) MOV [BX],ES:AX (3) MOV BYTE PTR[BX],1000 解:

(1) 基址变址方式不能有 BX和BP的组合

(2) 在8086寻址方式中,AX不能作为基址寄存器使用,而且源、目的不能同时为存贮器寻址方式

(3) 1000超出一个字节的表数范围

05 0039 0402 0402 03 4 汇编语言及其程序设计

分析对于下面两个数据段,偏移地址为10H和11H的两个字节中的数据是一样的吗?为什么?

DTSEG SEGMENT | DTSEG SEGMENT ORG 10H | ORG 10H DATA1 DB 72H | DATA1 DW 7204H DB 04H | DTSEG ENDS DTSEG ENDS | 解:

不一样. 分别是72H, 04H和04H, 72H. 存储字时低8位存在低字节,高8位存在高字节.

41

联系合同范文客服:xxxxx#qq.com(#替换为@)