微机原理习题答案3、4

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.1机器指令分为哪几部分?每部分的作用是什么?

【解】:每条机器指令由两部分组成:操作码字段和地址码字段。操作码字段:用来说明该指令所要完成的操作。地址码字段:用来描述该指令的操作对象。一般是直接给出操作数,或者给出操作数存放的寄存器编号,或者给出操作数存放的存储单元的地址或有关地址的信息。

3.2指出下列MOV指令的源操作数的寻址方式。

MOV AX,1234H

MOV AX,BX

MOV 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 =10012H

3.4设ARRAY是字数组的首地址,写出将第5个字元素取出送AX寄存器的指令,要求使用以下几种寻址方式:

⑴直接寻址⑵寄存器间接寻址⑶寄存器相对寻址⑷基址变址寻址

【解】:⑴直接寻址⑵寄存器间接寻址⑶寄存器相对寻址⑷基址变址寻址

MOV AX, ARRAY+8 MOV BX, ARRAY+8 MOV BX, 8 LEA BX, ARRAY

MOV AX, [BX] MOV AX, ARRAY[BX] MOV SI, 8

MOV AX,[BX+SI]

3.5 设当前(CS)=2000H,(IP)=2000H,标号NEXT定义在当前代码段偏移地址为0100H 处,(DS)=1000H,(BX)=1000H,(11000H)=00H,(11001H)=30H,数据段定义的字变量ARRAY 的内容为1000H,试写出下列转移指令的目标转移地址。

⑴JMP NEAR PTR

⑵JMP BX

⑶JMP WORD PTR ARRAY

【解】:⑴ JMP NEAR PTR 此转移指令的目标转移地址为:20100H

⑵ JMP BX 此转移指令的目标转移地址为:21000H

⑶ JMP WORD PTR ARRAY 此转移指令的目标转移地址为:23000H

3.6设当前(CS)=2000H,(IP)=2000H,标号NEXT定义在3000H:1000H处。当前(DS)=1000H,(BX)=1000H,(11000H)=00H,(11001H)=03H,(11002H)=00H,(11003H)=30H,数据段定义的字变量ARRAY的内容为0300H,(ARRAY+2)=3000H,试写出下列转移指令的目标转移地址。

⑴JMP FAR PTR NEXT

⑵JMP DWORD ARRAY

【解】:⑴ JMP FAR PTR NEXT 此转移指令的目标转移地址为:31000H

⑵ JMP DWORD ARRAY 此转移指令的目标转移地址为:30300H

3.7下列每组指令有何区别?

⑴MOV AX,1234H ⑵MOV AX,TABLE

MOV AX,[1234H] MOV AX,[TABLE]

⑶MOV AX,TABLE ⑷MOV AX,BX

LEA AX,TALBE MOV AX,[BX]

【解】:⑴第一条指令中,1234H就是源操作数,直接送入AX中,第二条指令中,1234H 是源操作数的地址,该指令是把1234H所指示的地址单元的值送入AX中。

⑵两条指令都是直接寻址方式,都是把TABLE指示的地址单元的值送入AX中。

⑶ 第一条指令中,TABLE 为一地址单元的地址,该条指令是把TABLE 所指示的地址单元的值送入AX 中,第二条指令是把源操作数的偏移地址送入AX 中。

⑷ 第一条指令为寄存器寻址方式,BX 中的值为源操作数,该条指令是把BX 中的值送入AX 中,第二条指令是寄存器间接寻址方式,BX 中的值为源操作数的地址,该条指令是把BX 所指示的地址单元的值送入AX 中。

3.8 MOV CS ,AX 指令正确吗?

【解】:MOV CS ,AX 指令不正确。因为CS 是指令寄存器,由系统自动改变,不能由指令进行更改。

3.9写一指令序列将3456H 装入DS 寄存器。 【解】:MOV AX 3456H MOV DS AX

3.10若正在访问堆栈中的03600H 单元,则SS 和SP 的值各是多少?

【解】:若正在访问堆栈中03600H 单元,则SS 和SP 的值会有好多组合,其中可以有SS 是0300H ,SP 是0600H 。

3.11 若(SS)=2000H ,(SP)=000AH ,先执行将字数据1234H 和5678H 压入堆栈的操作,再执行弹出一个字数据的操作,试画出堆栈区及SP 的内容变化过程示意图(标出存储单元的物理地址)。

【解】:物理地址=(SS)×10H +SP

3.12 解释XLAT 指令是怎样转换AL 寄存器中的内容的,并编写一段程序用XLAT 指令将BCD 码0~9转换成对应的ASCII 码,并将ASCII 码存入ARRAY 中。

【解】:XLAT 指令是将AL 的内容替换成存储单元中的一个数,往往用于代码转换。使用此指令前,先在数据段建立一个表格,表格首地址存入BX 寄存器,欲取代码的表内位移量存入AL 寄存器中。XLAT 指令将(AL)值扩展成16位,与(BX)相加形成一个段偏移地址,段地址取(DS),据此读出代码送入AL 寄存器。

程序如下:TABLE DB 30H, 31H, ┅, 39H

ARRAY DB 1O DUP(?) MOV CL, 10 MOV SI, 0

MOV BX, OFFSET TABLE XOR AL, AL AGAIN: XLAT

MOV [SI], AL INC SI INC AL LOOP AGAIN

相关文档
最新文档