大连理工大学计算机原理习题3答案概要.docx

上传人:b****9 文档编号:25682508 上传时间:2023-06-11 格式:DOCX 页数:14 大小:37.68KB
下载 相关 举报
大连理工大学计算机原理习题3答案概要.docx_第1页
第1页 / 共14页
大连理工大学计算机原理习题3答案概要.docx_第2页
第2页 / 共14页
大连理工大学计算机原理习题3答案概要.docx_第3页
第3页 / 共14页
大连理工大学计算机原理习题3答案概要.docx_第4页
第4页 / 共14页
大连理工大学计算机原理习题3答案概要.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

大连理工大学计算机原理习题3答案概要.docx

《大连理工大学计算机原理习题3答案概要.docx》由会员分享,可在线阅读,更多相关《大连理工大学计算机原理习题3答案概要.docx(14页珍藏版)》请在冰豆网上搜索。

大连理工大学计算机原理习题3答案概要.docx

大连理工大学计算机原理习题3答案概要

习题3:

1、8086系统中,请说明下列指令的源操作数的寻址方式是什么?

1)MOVAX,1234H立即寻址

2)MOVAX,[1234H]直接寻址

3)MOVAX,[BX]间接寻址

4)MOVAX,1234H[BX+SI]相对基址变址寻址

5)MOVSB数据串寻址

6)INAL,DX间接端口寻址

2、请在下表中画出下列数据段以十六进制表示的各单元值(表格中每个单元表示一个字节),并写出变量var1,var2,var3的偏移地址和cnt的值。

0030H

dataSEGMENTpara

ORG30H

var1DB-2,‘A’,2dup(‘23’)

var2DW-1

cntEQU$-var1

var3DWvar2

dataENDS

答:

var1:

0030,var2:

0036,var3:

0038,cnt=8.

3、以下程序实现将变量var进行var*10+600的操作,并将计算结果保存在变量result中,当程序执行到地址M5的时候,请在以下表格中画出当前堆栈指针的位置和堆栈里的内容(程序断点可以用标号,在堆栈中可用寄存器名代表保存的内容,SS的内容不用指定,表格的每个单元表示一个字)。

(6分)

datasegment

vardw1000

resultdd?

dataends

ss_segsegmentstack

db100dup(?

ss_segends

codesegment

assumecs:

code,ds:

data,ss:

ss_seg

mainprocfar

pushds

movax,0

pushax

movax,data

movds,ax

movax,var

M1:

callCaculate

M2:

dw10

M3:

dw600

M4:

leabx,result

mov[bx],ax

mov[bx+2],dx

ret

mainendp

Caculateproc

pushbp

movbp,sp

pushsi

pushbx

movbx,[bp+2]

movsi,cs:

[bx]

mulsi

M5:

addax,cs:

2[bx]

addbx,4

mov[bp+2],bx

popbx

popsi

popbp

ret

Caculateendp

codeends

endmain

答:

如下图,此时栈顶指针指向比bx所在单元地址小1的堆栈单元。

4、问答题

1)若AL=81H,则执行指令CBW后AH的内容为多少?

答:

AH的内容为FFH.

2)若BL=BEH,执行下列指令序列,则每执行一步,BL和CF的值为多少?

SHLBL,1;BL=__7CH___,CF=_1___

MOVCL,2

SHRBL,CL;BL=__1FH___,CF=___0___

ORBL,80

SARBL,1;BL=__CFH___,CF=___1___

RORBL,CL;BL=___F3H__,CF=___1___

INCCL

RCLBL,CLBL=___9FH__,CF=____1__

3)什么是短跳转、近跳转、远跳转?

答,短跳转,是段内直接跳转,把IP的内容加上一个字节的补码数作为新的IP,跳转范围为-128~127.

近跳转,是段内直接跳转,把IP的内容加上一个字的补码数作为新的IP,跳转范围为-32768~32767.

远跳转,是段间直接跳转。

4)若当前SP=1000H,CS=B000H,IP=0100H,且当前FLAG=2345H,则执行指令INT21H以后,SP的值变为多少?

堆栈段中6个存储单元0FFFH、0FFEH、0FFDH、0FFCH、0FFBH、0FFAH的值分别是多少?

答:

SP=0FFAH,(0FFFH)=23H,(0FFEH)=45H,(0FFDH)=B0H,(0FFCH)=00H,(0FFB)=01H,(0FFA)=00H.

5、请写出程序段实现下列功能

例如:

从160H端口读取1个字节

MOVDX,160H

INAL,DX

1)将一个8位数20H写入到地址为20H的端口;

答:

MOVAL,20H

OUT20H,AL

2)若AL=56H,BL=57H,将这两个压缩格式BCD码相加并将结果保存到存储单元[2000H]中;

答:

ADDAL,BL

DAA

MOV[2000H],AL

3)将2个32位无符号数DAT1和DAT2相乘,结果保存在64位无符号数中,请编写程序段。

movax,data

movds,ax

leasi,result

subax,ax

mov[si+4],ax

mov[si+6],ax

movax,wordptrdata1

mulwordptrdata2

mov[si],ax

mov[si+2],dx

movax,wordptrdata1+2

mulwordptrdata2

add[si+2],ax

adc[si+4],dx

adcwordptr[si+6],0

movax,wordptrdata2+2

mulwordptrdata1

add[si+2],ax

adc[si+4],dx

adcwordptr[si+6],0

movax,wordptrdata2+2

mulwordptrdata1+2

adc[si+4],ax

adc[si+6],dx

movax,4c00h

int21h

4)求数据段偏移地址为1000H开始的一个字符串的长度,字符串以ASCII码0为结束符,长度要求包括结束符;(提示:

初始化AL=0CX=0FFFFH,然后使用REPNZSCASB命令,最后根据CX的值计算字符串长度)

答:

movax,ds

moves,ax

movdi,1000h

moval,0

movcx,0FFFFH

cld

repnescasb

movax,0FFFFH

subax,cx

movcx,ax

6.什么是寻址方式?

8086/8088共有哪几种寻址方式?

答:

获得数据或者数据地址信息的方式称为寻址方式。

1隐含寻址2立即寻址3寄存器寻址4直接寻址5间接寻址6基址寻址7变址寻址8基址变址寻址9相对基址变址寻址10数据串寻址11直接端口寻址12间接端口寻址

13段内直接寻址14段内间接寻址15段间直接寻址16段间间接寻址

7.设DS=6000H,ES=2000H,SS=1500H,SI=00A0H,BX=0800H,BP=1200H,变量VAR地址为0050H.请分别指出下列指令源操作数的寻址方式?

并计算除立即寻址外的其他寻址方式下源操作数的地址。

(1)MOVAX,BX

(2)MOVDL,80H(3)MOVAX,VAR

(4)MOVAX,VAR[BX][SI](5)MOVAL,‘B’(6)MOVDI,ES:

[BX]

(7)MOVDX,[BP](8)MOVBX,20H[BX]

答:

(1)寄存器寻址,无地址

(2)立即寻址(3)直接寻址,物理地址为60050H(4)相对基址变址寻址,物理地址为608F0H(5)立即寻址(6)间接寻址,物理地址为20800H(7)间接寻址,物理地址为16200H(8)基址寻址,物理地址为60820H

8.试说明指令MOVBX,5[BX]与指令LEABX,5[BX]的区别。

答:

第一个指令是将DS段内,便偏移地址为(BX+5,BX+6)的内容传送给BX,第二个指令取地址,是把BX+5送给BX。

9.设堆栈指针SP的初值为2300H,AX=50ABH,BX=1234H.执行指令PUSHAX后,SP=?

再执行指令PUSHBX及POPAX之后,SP=?

AX=?

BX=?

答:

SP=SP-2=22FEH,执行后面指令后SP=22FEH,AX=BX=1234H

10.指出下列指令的错误:

(1)MOVAH,CX

(2)MOV33H,AL(3)MOVAX,[SI][DI](4)MOV[BX],[SI](5)OUT230H,AX(6)MUL39H

答:

(1)两操作数字长不相等

(2)立即数不能作为目的操作数(3)两个变址寄存器不能同时使用(4)不能对两个存储器操作(5)端口地址超过8位,必须用间接寻址(6)立即数不能作为mul指令的操作数。

11.已知AL=7BH,BL=38H,试问执行指令ADDAL,BL后,AF、CF、OF、PF、SF和ZF的值各为多少?

答:

AF=1,CF=0,OF=1,PF=0,SF=1,ZF=0

12.试判断下列程序执行后,BX中的内容

MOV CL,3

MOV BX,0B7H

ROLBX,1

RORBX,CL

答:

BX=C02DH

13.按下列要求写出相应的指令或程序段:

(1)写出两条使AX内容为0的指令;

(2)使BL寄存器中的高4位和低4位互换;

(3)屏蔽CX寄存器的b11、b7和b3位;

(4)测试DX中的b0和b8位是否为1。

答:

(1)subax,axxorax,ax

(2)movcl,4

rolbl,cl

(3)andcx,0F777H

(4)testdx,0101H

14.分别指出以下两个程序段的功能:

(1)MOVCX,10

LEASI,FIRST

LEADI,SECOND

STD

REPMOVSB

(2)CLD

LEADI,[1200H]

MOVCX,0FF00H

XORAX,AX

REPSTOSW

答:

(1)将数据段中最高地址为first的10个字节数据按照减地址方向传送到扩展段中以second为最高地址的十个字节

(2)将扩展段中偏移地址1200H单元开始的0FF00H个字单元清零

15.已知AX=8060H,DX=03F8H,端口PORT1的地址是48H,内容为40H;PORT2的地址是84H,内容是65H.请指出下列执行后的结果。

(1)OUTDX,AL

(2)INAL,PORT1(3)OUTDX,AX(4)INAX,48H(5)OUTPORT2,AX

答:

(1)将60H写入地址为03F8H的端口中

(2)AL=40H(3)将8060H写入地址为03F8H的端口中(4)从48H端口读入16位数据放到ax中(5)将8060H写入地址为84H的端口中

16.单项选择:

(1)微处理器的主要组成部件是(B)

A.运算器、存储器和内部总线;B.运算器、控制器和存储器;C.存储器接口、I/O接口和运算器;D.运算器、控制器和寄存器

(2)下列指令中,CPU对其执行能够产生控制信号M/IO=0和RD=0的是(B)

A.MOV[50H],ALB.MOVAL,[50H]C.OUT10H,ALD.INAL,10H

(3)8086CPU组成的PC机数据线分别是(D)

A.8条单向线B.16条单向线C.8条双向线D.16条双向线

(4)可用作简单输入接口的电路是(C)

A.译码器B.锁存器C.三态缓冲器D转换器

17.多项选择:

(1)在8086CPU的下列寄存器中,可用作寄存器间接寻址的有(ACDE)

A.SIB.CXC.BXD.BPE.DI

(2)设SP=50H,执行指令RET0004H后,寄存器SP的内容是(E)

A.54HB.50HC.4EHD.4CHE.58H

18.简答题:

1)无符号数比较指令有哪些?

如何通过标志位进行判断的?

答:

JB/JNAE/JC;CF=1;小于/不大于转移JNB/JAE/JC;CF=0;高于等于/不高于转移

JBEshort_label;小于等于转移JNAshort_label;不大于转移:

测试条件:

CF|ZF=1

JNBEshort_label;不小于等于;转移JAshort_label;大于转移:

测试条件:

CF|ZF=0

2)有符号数比较指令有哪些?

如何通过标志位进行判断的?

答:

JLshort_label;小于转移JNGEshort_label;不大于等于转移:

测试条件:

SF^OF=1

JNLshort_label;不小于转移JGEshort_label;大于等于转移:

测试条件:

SF^OF=0

JNLEshort_label;不小于等于转移JGshort_label;大于转移:

测试条件:

(SF^OF)|ZF=0

JLEshort_label;小于等于转移JNGshort_label;不大于转移:

测试条件:

(SF^OF)|ZF=1

3)试述传送类指令有哪些?

简述lea、lds、les、Xlat指令的功能?

答:

mov,push,pop,xchg,in,out,xlat,lea,lds,les,lahf,sahf,pushf,popf

Lea:

有效地址传送指令;lds将源操作数指定的四个字节传送到指定的寄存器及DS寄存器中;les将源操作数指定的四个字节传送到指定的寄存器及ES寄存器中;xlat:

(bx+al)=>al

4)简述MUL、IMUL、DIV、IDIV、CBW、CWD指令的功能?

答:

MUL无符号乘法.IMUL整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),

 DIV无符号除法.IDIV整数除法.以上两条,结果回送:

商回送AL,余数回送AH,(字节运算);或商回送AX,余数回送DX,(字运算).

  CBW字节转换为字.(把AL中字节的符号扩展到AH中去)

  CWD字转换为双字.(把AX中的字的符号扩展到DX中去)

5)试述逻辑移位操作指令有哪些?

如何使用?

答:

SHL逻辑左移.

  SAL算术左移.(=SHL)操作数整体左移,每次的最高位移到CF,空余位补0

  SHR逻辑右移.操作数整体右移,每次的最低位移到CF,空余位补0

  SAR算术右移.操作数整体右移,每次的最低位移到CF,空余位补符号数

  ROL循环左移.操作数整体左移,每次的最高位移到CF,最低位用原来最高位补

  ROR循环右移.操作数整体右移,最低位移到CF,最高位用原来最低位补

  RCL通过进位的循环左移.类似ROL循环左移,但CF加入到循环圈中

  RCR通过进位的循环右移.类似ROR循环左移,但CF加入到循环圈中

6)试述串操作指令有哪些?

如何使用?

答:

MOVS串传送指令MOVSB:

ES:

[DI]←DS:

[SI],SI←SI±1,DI←DI±1

MOVSW:

ES:

[DI]←DS:

[SI],SI←SI±2,DI←DI±2使用前缀REP,可完成多次数据传送

STOS存入串指令STOSB:

ES:

[DI]←AL,DI←DI±1;STOSW:

ES:

[DI]←AX,DI←DI±2可使用REP前缀

LODS从串中取数LODSB:

AL←DS:

[SI],SI←SI±1;LODSW:

AX←DS:

[SI],SI←SI±2

SCAS串扫描指令,在数据中查找AL或AX中的内容SCASB:

AL-ES:

[DI],DI←DI±1;SCASW:

AX-ES:

[DI],DI←DI±2可使用REPE/REPZ或REPNE/REPNZ,仅影响标志位

CMPS串比较指令,两个MEM操作数的比较,源操作数-目的操作数CMPSB:

DS:

[SI]-ES:

[DI],SI←SI±1,DI←DI±1;CMPSW:

DS:

[SI]-ES:

[DI],SI←SI±2,DI←DI±2可使用REPE/REPZ或REPNE/REPNZ,该指令只影响标志位,不保存结果

7)简述RET、RETIMM16、IRET指令的功能?

答:

RET子程序返回指令,执行时,从堆栈顶部弹出返回地址

RETIMM16带立即数(0-FFFFH范围的任何偶数)返回指令执行时,从堆栈顶部弹出返回地址,再使SP加上立即数,

IRET中断返回,执行时,从堆栈中依次弹出断点地址的IP、CS和FLAG

8)简述LOOP、LOOPE、LOOPNE、JCXZ指令的功能?

答:

LOOPTARGET—循环指令,循环次数由CX决定

LOOPZ/LOOPETARGET—条件循环指令,执行时,在LOOP指令的基础上,还需判断ZF,若CX!

=0且ZF=1则循环

LOOPNZ/LOOPNETARGET执行时,在LOOP指令的基础上,还需判断ZF若CX!

=0且ZF=0则循环

JCXZshort_label;CX=0则转移,测试条件:

CX=0

9)简述根据子程序调用范围和寻址方式,说明CALL指令使用功能?

答:

CALLTARGET子程序调用指令类似转移指令,也有4种形式

CALL1000H;段内直接转移,调用地址在指令中给出

CALLAX;段内间接转移,调用地址在AX中给出

CALL2000H:

0200H;段间直接转移,指令中直接给出调用地址的段地址和偏移量

CALLDWORDPTR[DI];段间间接转移,调用地址在内存单元中

执行该指令时,会将下一条指令的地址压入堆栈,该地址称为返回地址

段内调用:

只将返回地址的偏移量压入堆栈

段间调用:

将返回地址的段地址和偏移量压入堆栈,先压CS,后压IP

实际使用时CALL指令后面直接跟子程序名

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 视频讲堂

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1