当前位置:首页 > 教学设计 > 汇编语言沈美明答案 汇编语言第3章答案 沈美明
 

汇编语言沈美明答案 汇编语言第3章答案 沈美明

发布时间:2019-08-02 09:58:48 影响了:

第三章 80X86的指令系统和寻址方式 1、给定

(BX )=637DH,(SI )=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么

答案:

(1)立即寻址 没有

(2)直接寻址 7237H

(3)使用BX 的寄存器寻址 没有

(4)使用BX 的间接寻址 637DH

(5)使用BX 的寄存器相对寻址 0D5F0H

(6)基址变址寻址 8E18H

(7)相对基址变址 004FH

2、根据下列要求,写出相应的汇编指令

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

(2)用寄存器BX 和SI 基地址变址寻址方式把存储器中的一个字节与AL 寄存器的内容相加,并把结果送到AL 寄存器中。

(3)用寄存器BX 和位移量0B2H 的寄存器相对寻址方式把存储器中的一个字和(CX )相加,并把结果送回存储器中。

(4)用位移量为0524H 的直接寻址方式把存储器中的一个字与数2A59H 相加,并把结果送回该存储单元中。

(5)把数0B5H 与(AL )相加,并把结果送回AL 中。

答案:

(1)ADD DX,BX

(2)ADD AL,[BX][SI]

(3)ADD [BX][0B2H], CX

(4)MOV AX,2A59H

ADD [0524H] ,AX

(5)ADD AL ,0B5H

3、写出把首地址为BLOCK 的字数组的第6个字送回到DX 寄存器的指令。要求使用以下几种寻址方式:

(1)寄存器间接寻址

(2)寄存器相对寻址

(3)基址变址寻址

答案:

(1)寄存器间接寻址

MOV BX,OFFSET [BLOCK][0AH]

MOV DX ,[BX]

(2)寄存器相对寻址

MOV SI,OAH

MOV DX,[BLOCK][SI]

(3)基址变址寻址

MOV BX ,BLOCK

MOV SI,OAH

MOV DX,[BX][SI]

4、现有

(DS )

=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,

(21200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX 寄存器的内容。

答案:

(1)MOV AX,1200H 1200H

(2)MOV AX,BX 0100H

(3)MOV AX,[1200] 4C2AH

(4)MOV AX,[BX] 3412H

(5)MOV AX, 1100[BX] 4C2AH

(6)MOV AX,[BX][SI] 7856H

(7)MOV AX,1100[BX][SI] 65B7H

5、给定

(IP )=2BC0H,(CS )=0200H,位移量D=5119H,(BX )=1200H,(DS )=212AH,(224A0)=0600H,(275B9)=098AH,试为以下的转移指令找出转移的偏移地址。

(1)段内直接寻址

(2)使用BX 及寄存器间接寻址方式的段内间接寻址

(3)使用BX 及寄存器相对寻址方式的段内间接寻址

答案:

(1)7CD9H (2)1200H (3)6319H

7、在0624单元内有一条二字节JMP SHORT OBJ 指令,如其中位移量为(1)27H ,(2)6BH ,

(3)0C6H ,试问转向地址OBJ 的值是多少?

答案:

转向地址OBJ 的值分别为:(1)064DH (2)0691H (3)05E0H 注意有符号数的符号位

8、假定(DS )=2000H,(ES )=2100H,(SS )=1500H,(SI )=00A0H,(BX )=0100H,(BP )=0010H,数据段中变量名VAL 的偏移地址值为0050H ,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?

(1)MOV AX,0ABH (2)MOV AX,BX

(3)MOV AX,[100] (4)MOV AX,VAL

(5)MOV AX,[BX] (6)MOV AX,ES:[BX]

(7)MOV AX,[BP] (8)MOV AX,[SI]

(9)MOV AX,[BX+10] (10)MOV AX,VAL[BX]

(11)MOV AX,[BX][SI] (12)MOV AX,VAL[BX][SI]

答案:

(1)MOV AX,0ABH 立即数寻址 无物理地址

(2)MOV AX,BX 寄存器寻址 同上

(3)MOV AX,[100] 直接寻址 20100H

(4)MOV AX,VAL 直接寻址 20050H

(5)MOV AX,[BX] 寄存器间接寻址 20100H

(6)MOV AX,ES:[BX] 直接寻址 21100H

(7)MOV AX,[BP] 寄存器间接寻址 20010H

(8)MOV AX,[SI] 同上 200A0H

(9)MOV AX,[BX+10] 寄存器相对寻址 20110H

(10)MOV AX,VAL[BX] 同上 20150H

(11)MOV AX,[BX][SI] 基址变址寻址 201A0H

(12)MOV AX,VAL[BX][SI] 相对基相变址寻址 201F0H

10、如TABLE 为数据段中0032单元的符号名,其中存放的内容为1234H ,试问以下两条指令有什么区别?指令执行完后AX 寄存器的内容是什么?

答案:

MOV AX,TABLE 是把符号地址TABLE 里的内容送到AX 里,指令执行完后,(AX)=1234H LEA AX,TABLE 是把符号地址TABLE 的有效地址(这里是偏移量)送到指定寄存器AX 里,指令执行完后,(AX )=0032H

11、执行下列指令后,AX 寄存器中的内容是什么?

TABLE DW 10,20,30,40,50

ENTRY DW 3

MOV BX,OFFSET TABLE

ADD BX,ENTRY

MOV AX,[BX]

答案:

执行完指令后,(AX )=1E00H

15、求出以下各十六进制数与十六进制数62A0之和,并根据结果设置标志位SF ,ZF ,CF ,和OF 的值。

答案:

运算结果 SF,ZF,CF,OF各位的值(从左至右依次往下~)

(1)74D4H 0 0 0 0

(2)A5C1H 1 0 0 1

(3)4240H 0 0 1 0

(4)0000H 0 1 1 0

17、写出执行以下计算的指令序列,其中X ,Y ,Z ,R 和W 均为存放16位带符号数单元的地址。

(1) Z ←W+(Z-X )

(2) Z ←W-(X+6)-(R+9)

(3) Z ←(W*X)/(Y+6),R ←余数

(4) Z ←((W-X )/5*Y)*2

答案:

(1).MOV AX,Z ;把Z 送到AX

SUB AX,X ;Z-X

ADD AX,W ;W+(Z-X)

MOV Z,AX ;结果保存在Z 中

(2).MOV AX,R ;R 送到AX 中

ADD AX,9 ;R+9

MOV BX,X ;X 送到BX 中

ADD BX,6 ;X+6

ADD AX,BX ;(R+9)+(X+6),结果保存在AX 中

MOV BX,W ; W送到BX 中

SUB BX,AX ; W-(R+9)-(X+6),连续减去两个数,相当于减去这两个数的和~~ MOV Z,BX ;最终结果送到Z 中

(3)

MOV AX,W ;把W 送到AX

IMUL X ;W*X 注意:低十六位保存在AX 里,高十六位保存在DX 里

MOV BX,Y ;把Y 送到BX 里

ADD BX,6 ;Y+6

IDIV BX ;(W*X)/(Y+6) 注意:商保存在AX 里,余数保存在DX 里

MOV Z,AX ;把商送到Z 中,

MOV R,DX ;把余数 送到R 中

(4)

MOV AX,W ;把W 送到AX 中

SUB AX,X ;W-X

CWD ;把AX 中的十六位带符号数扩展成为32位,低十六位保存在AX 中,高十六位保;在DX 中

MOV BX,5 ;把5送到BX 中

IDIV BX ;(W-X )/5 被除数为32位,除数为16位商为16位

IMUL Y ;上一步结果再乖以Y ,积为32位

MOV BX,2 ;把2送到BX 中

IMUL BX ;上一步乘法所得的积再乘以2,各为64位

MOV Z,EAX ;把结果中低32位放入Z 双字单元中

MOV [Z+4],EDX ;把结果中高32位放入Z+4双字单元中

18、已知程序段如下:

MOV AX,1234H

MOV CL,4

ROL AX,CL

DEC AX

MOV CX,4

MUL CX

INT 20H

试问:

(1) 每条指令执行完后,AX 寄存器的内容是什么?

(2) 每条指令执行完后,进位、符号和零标志的值是什么?

(3) 程序结束时,AX 和DX 的内容是什么?

答案:

指令 本条指令执行完后AX 的内容 执行完后CF,SF,ZF 的值

MOV AX,1234H 1234H 0 0 0

MOV CL,4 1234H 0 0 0

ROL AX,CL 2341H 1 0 0

DEC AX 2340H 1 0 0

MOV CX,4 2340H 1 0 0

MUL CX 8918H 0 0 0

INT 20H

程序结束后,(AX )=8918H (DX)=0000H

21、写出对存放在DX 和AX 中双字长数求补的指令序列。

答案:

NEG DX

NEG AX

SBB DX,0

22、试编写一个程序求出双字长数的绝对值。双字长数在A 和A+2单元中,结果存放在B 和B+2单元中。

答案:

MOV AX,A ;把双字長数的低字放到AX 中

MOV DX,[A+2] ;把双字長数的高字放到DX 中

TEST DX,8000H ;测试字長数的符号

JZ RIGHT ;如果是非负数,则直接保存

NEG DX ;如果是负数,则求补

NEG AX

SBB DX,0

RIGHT :

MOV B,AX

MOV [B+2],DX

25、试用移位指令把十进制数+53和-49分别乘以2。它们应该用什么指令?得到的结果是什么?如果要除以2呢?

答案:

(1)把53D 乘以2的程序:

MOV AX,35H ;53D=35H

SHL AX ,1

(2)把53除以2 的程序:

MOV AX,35H

SHR AX,1

其他的同理

28、下列程序段执行完后,BX 寄存器中的内容是什么?

MOV CL,3

MOV BX,0B7H

ROL BX,1

ROR BX,CL

答案:

该程序段执行完后,BX 寄存器的內容是:C02DH

30、编写程序段,把字符串STRING 中的‘&’字符用空格符代替。

STRING DB ‘The data is FEB&03’

答案:

MOV CX,12H ;把重复次数放到CX 中。这里用十六進制表示 MOV SI,0 ;初始化SI

MOV AX,26H ;把字符的ASCII 值放入AX

CHECK : CMP AX,STRING[SI] ;依次查找

INC SI

LOOPNE CHECK ;找到了就退出

MOV AX,20H ;把空格符的ASCII 值勤放入AX 中

MOV STRING[SI-1],AX ;用空格符代替

32、编写一程序段,比较两个5字节的字符串OLDS 和NEWS ,如果OLDS 字符串不同于NEWS 字符串则执行NEW_LESS;否则顺序执行程序。

答案:

程序实现:

LEA SI,OLDS

LEA DI,NEWS

MOV CX,5

REPZ CMPSB

JNZ NEW_LESS

42、说明下列指令的操作

(1) PUSH AX

(2) POP ESI

(3) PUSH [BX]

(4) PUSH AD

(5) POP DS

(6) PUSH 4

答案:

(1)PUSH AX

(SP)

(SP+1)

(SP)

(2)POP ESI

(ESI)

(ESP)

(3)PUSH [BX]

(SP)

(SP+1)

(SP)

(4)PUSHAD

(ESP)

(ESP-4)

(ESP-8)

(ESP-12)

(ESP-16)

(ESP-20)

(ESP-24)

(ESP-28)

(ESP)

(5)POP DS

(DS)

(SP)

(6) PUSH 4

(SP)

(SP+1)

(SP )

45、请给出下列指令序列执行完后EAX 和EBX 的内容。

MOV ECX,307F455H

BSF EAX,ECX

BSR EBX,ECX

答案:

(EAX )=0 (EBX )=25D

49、试编写一程序段,要求把BL 中的数除以CL 中的数,并把其商乘以2,最后的结果存入DX 寄存器中。

答案:

程序实现:

MOV AL,BL

CBW

IDIV CL

IMUL 2

MOV DX,AX

51、试编写一程序段,要求在长度为100H 字节的数组中,找出大于42H 的无符号数的个数并存入字节单元UP 中,找出小于42H 的无符号数的个数并存入字节单元DOWN 中。 答案:

假设数组名为NUMBERS ,程序如下

MOV BX,0 ;后面用到

MOV CX,100H ;把循环次数放入CX

MOV AL,42H

MOV SI,0 ;初始化SI

;CHECK 用来实现查找功能

CHECK :

CMP AL ,NUMBERS[SI]

INC SI

JB STORE1 ;大于42H 的数的个数存入UP

JA STORE2 ;小于42H 的的数的个数存入DOWN 中 LOOP CHECK ;相等继续循环~

STORE1:

INC BL ;找到一个大于42 的数,BL 值增加1 MOV UP,BL

LOOP CHECK

STORE2:

INC BH

MOV DOWN,BH

LOOP CHECK

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3