《微机原理》习题参考答案黄冰版Word下载.docx

上传人:b****4 文档编号:17168277 上传时间:2022-11-28 格式:DOCX 页数:40 大小:85.33KB
下载 相关 举报
《微机原理》习题参考答案黄冰版Word下载.docx_第1页
第1页 / 共40页
《微机原理》习题参考答案黄冰版Word下载.docx_第2页
第2页 / 共40页
《微机原理》习题参考答案黄冰版Word下载.docx_第3页
第3页 / 共40页
《微机原理》习题参考答案黄冰版Word下载.docx_第4页
第4页 / 共40页
《微机原理》习题参考答案黄冰版Word下载.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

《微机原理》习题参考答案黄冰版Word下载.docx

《《微机原理》习题参考答案黄冰版Word下载.docx》由会员分享,可在线阅读,更多相关《《微机原理》习题参考答案黄冰版Word下载.docx(40页珍藏版)》请在冰豆网上搜索。

《微机原理》习题参考答案黄冰版Word下载.docx

1025H

0F2AH

1109H

00EAH

我们可以看到不同段的段地址,在不同的偏移地址下,可以对应相同的物理地址,也就相同的存储空间。

说明在分配段时是重叠的.

2.4每个段区最大可占用64KB的地址范围,因为寄存器都是16位的,216B=64KB。

不允许重叠,则最多可分16个段区,因为8086CPU有20条地址线,寻址范围1MB,1MB/64KB

=16个。

2.6

指令

目的操作数寻址方式

源操作数寻址方式

MOVARRAY,BX

直接寻址

寄存器寻址

ADCCX,ALPHA[BX][SI]

带位移的基址变址寻址

ANDGAMMA[DI],11011000B

带位移的变址寻址

立即数寻址

INCBL

隐含寻址

TESTES:

[SI],DX

寄存器间接寻址

SBBSI,[BP]

2.7

1源操作数是立即数寻址,AX=1200H

2源操作数是寄存器寻址,AX=BX=0100H

3源操作数是直接寻址,将2000H×

10H+1200H=21200H和21201H的内容取出,赋给AX=4C2AH

4源操作数是寄存器间接寻址,将2000H×

10H+0100H=20100H和20101H的内容取出,赋给AX=3412H

5源操作数是寄存器相对寻址,将2000H×

10H+0100H+1100H=21200H和21201H的内容取出,赋给AX=4C2AH

6源操作数是基址变址寻址,将2000H×

10H+0100H+0002H=201002和201003H的内容取出,赋给AX=7856H

7源操作数是基址变址相对寻址,将2000H×

10H+0100H+0002H+1100H=21202H和21203H的的内容取出,赋给AX=65B7H

2.8

MOVAX,00ABH

跟随在指令后,有cs:

ip决定

MOVAX,BX

在寄存器中

MOVAX,[100H]

2000H×

10H+100H=20100H

MOVAX,[BX]

10H+0100H=20100H

MOVAX,[BP]

1500H×

10H+0010H=15010H

MOVAX,[BX+10]注意是十进制

带位移的基址寻址

10H+0100H+0AH=2010AH

MOVAX,[BX][SI]

基址变址寻址

10H+0100H+00A0H=201A0H

MOVAX,VAL

10H+0050H=20050H

MOVAX,ES:

[BX]

2100H×

10H+0100H=21100H

MOVAX,[SI]

10H+00A0=200A0H

MOVAX,VAL[BX]

10H+0100H+0050H=20150H

MOVAX,VAL[BX][SI]

10H+0100H+00A0H+0050H=201F0H

2.9

指令

Sp

PUSHCX

1FFAH

66H

1FFBH

55H

PUSHBX

1FFCH

44H

1FFDH

33H

PUSHAX

1FFEH

22H

1FFFH

11H

sp

POPAX

AX=5566H

BX=3344H

POPCX

CX=3344H

SP=1FFEH

2.10

AX的值

MOVAX,0

AX=0000H

DECAX

AX=0FFFFH

ADDAX,7FFFH

AX=7FFEH

ADDAX,2

AX=8000H

NOTAX

AX=7FFFH

SUBAX,0FFFFH

ADDAX,8000H

ORAX,0BFDFH

AX=0BFDFH

ANDAX,0EBEDH

AX=0ABCDH

XCHGAH,AL

AX=0CDABH

SALAX,1

AX=9B56H(CF=1)

RCLAX,1

AX=36ADH(AF=1)

2.11

0110001010100000B

+1001110101100000B

10000000000000000B(0000H)AF=0,SF=0,ZF=1,CF=1,OF=0,PF=1

0110001010100000B

+0100001100100001B

1010010111000001B(0A5C1H)AF=0,SF=1,ZF=0,CF=0,OF=1,PF=0

2.12

0001001000110100B

-0100101011100000B[1011010100100000B]补码形式

1100011101010100B(0C754H)AF=0SF=1ZF=0CF=1OF=0PF=0

1001000010010000B

-0100101011100000B[1011010100100000B]补码形式

0100010110110000B(45B0H)AF=0SF=0ZF=0CF=0OF=1PF=1

2.13

1BX=009AH

2BX=0061H

3BX=00FBH

4BX=001CH

5BX=0000H

6BX=00E3H(本条语句只对标志位有影响,不存贮结果)

2.14

BX=0110110100010110=6D16H

BX=0000000011011010=00DAH

2.15

1DX=0000000010111001DX=0000000001011100=005CH

2DX=0000000010111001DX=0000000000010111=0017H

3DX=0000000010111001DX=0000010111001000=05C8H

4DL=10111001DX=0000000001110010=0072H

5DX=0000000010111001DX=0010000000010111=2017H

6DL=10111001DX=0000000011001101=00CDH

7DH=00000000DX=0000000010111001=00B9H

8DX=0000000010111001DX=0000010111001100=05CCHCF=0

9DL=10111001DL=0000000011011100=00DCHCF=1

2.16

方法一:

循环移位方法二:

逻辑右移

MOVCL,04HMOVCL,04H

ROLAL,CLSHRAL,CL

第三章宏汇编语言程序设计

3.1

1)AX=0001H;

2)AX=0002H

3)CX=0014H

4)DX=0028H

5)CX=0001H

3.2

1)ARRAYDB56H,78,0B3H,100

2)DATADW2965H,45H,2965,0A6H

3)ALPHADW0C656H,1278H

4)BETADB2DUP(23),5DUP(‘A’),10DUP(1,2),20DUP(?

5)STRINGDB‘THISISAEXAMPE’

6)COUNTEQU100

3.3

00H

01H

42H

41H

43H

1DH

1FH

(1)

(2)

BYTE_VARR

4CH(76)

57H

03H

3.4

DATA_SEGSEGMENT

DATA1DB‘DATASEG,MENT’

DATA2DB72,65,-10

DATA3DB109,98,21,40

DATA4DB10DUP(0)

DATA5DB‘12345’

DATA6DW7,9,298,1967

DATA7DW785,13475

DATA8DWDB($-DATA6)-(DATA6-DATA1)

DATA_SEGENDS

3.5

1)MOVBX,OFFSETBUF1

2)MOVCLBYTEPTR[BUF2+2]

3)MOV[BUF3+9],A6H

4)COUNTEQUBUF3-BUF1

3.8

APPAYDB10DUP(29H)

ALPHADB-25,4,10,76,3

BUFFERDB100DUP(?

3.9

BCD1DB?

?

BCD2DB?

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA_SEG,ES:

DATA_SEG

START:

MOVAX,DATA_SEG

MOVDS,AX

MOVDS,AX

MOVCL,04H

MOVSI,OFFSETBCD1

MOVAL,[SI]

SALAL,CL

MOVBL,[SI+1]

ANDBL,0FH

ADDAL,BL

MOVBCD2,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3.11

1)MOVCH,32HCH=32H

2)ADDCH,2AHCH=5CH

3)SHLCH,1CH=0B8H

4)MOV[BX][NUM+9],CHCH=0B8H

3.12

XDB?

YDB?

WDB?

ZDB?

RDB?

MOVAX,DATA_SEG

MOVAL,W

SUBAL,X

CBW

IDIV0AH

MOVR,AH

IMULY

IMULAX

MOVAH,4CH

3.14

STR1DB'

THISISADOG'

STR2DB'

THISISACOCK'

COUNTDB$-STR2

NUMDB?

CODE,DS:

MOVES,AX

MOVCH,0

MOVCL,COUNT

CLD

MOVSI,OFFSETSTR1

MOVDI,OFFSETSTR2

REPZCMPSB

ANDSI,000FH

MOVAX,SI

MOVNUM,AL

3.16

DATASEGMENT

SRCBUFDB80DUP(?

DSTBUFDB80DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETSRCBUF

MOVDI,OFFSETDSTBUF

MOVCX,80

LOP1:

MOVAL,[SI]

INCSI

CMPAL,ODH

JENEXT

MOV[DI],AL

INCDI

NEXT:

LOOPLOP1

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3.17

DATASEGMENT

BUFDBnDUP(?

SUMDBO

CODESEGMENT

START:

MOVAX,DATA

MOVDS,AX

MOVCX,n

MOVSI,OFFSETBUF

LOP1:

MOVAL,[SI]

CMPAL,O

JGENEXT

INCSUM

NEXT:

LOOPLOP1

MOVAH,4CH

3.18

DATASEGMENT

BUFDWnDUP(?

BUF1DWnDUP(?

BUF2DWnDUP(?

DATAENDS

MOVDI,OFFSETBUF1

MOVBX,OFFSETBUF2

MOVAX,[SI]

INCSI

CMPAX,0000H

JGENEXT1

MOV[BX],AX

ADDBX,02H

JMPLOP2

NEXT1:

MOV[DI],AX

ADDDI,2

LOP2:

3.19

STACKSEGMENTSTACK

DB256DUP(?

STACKENDS

BUFDB‘Thisisastring’,’$’

CODESEGMENT

ASSUMECS:

CODE.DS:

DATA;

SS:

STACK

MOVSI,OFFSETBUF

TACKCHAR:

MOVDL,[SI]

CMPDL,’$’

JZDONE

CMPDL,’a’

JBNEXT

SUBDL,20H

MOVAH,02H

MPTAKECHAR

DONE:

MOVAH,4CH

INT21H

3.20

DATA_SEGSEGMENT

DATXDB?

DATYDB?

DATZDB?

MOVDS,AX

MOVAL,DATX

MOVBL,DATY

CMPAL,BL

JSNEXT

MOVDATZ,AL

JMPDONE

NEXT:

MOVDATZ,BL

DONE:

MOVAH,4CH

3.21

DATADB?

DATBDB?

DATCDB?

DATDDB?

CMPDATA,0

JZNEXT

CMPDATB,0

CMPDATC,0

MOVAL,DATA

ADDAL,DATB

ADCAL,DATC

MOVDATD,AL

MOVDATA,0

MOVDATB,0

MOVDATC,0

3.22程序段是将十六进制数的ASSII码转化为十六进制数.本例是将大写字母A的ASCII变为十六进制数,将结果存入字符变量HEXNUM中。

HEXNUM变量中原来的内容未知,程序段执行后的内容是字符A的十六进制数0A

3.24

N=10

DATA1DBNDUP(?

DATA2DBNDUP(?

ADR1DW?

ADR2DW?

DATA_SEGENDS

LEASI,DATA1

LEADI,DATA2

MOVCX,N

LOP1:

MOVAH,[SI]

CMPAH,[DI]

JNZNOTEQU

INCSI

INCDI

MOVAH,0FFH

SAHF

JMPDONE

NOTEQU:

MOVAH,0

MOVADR1,[SI]

MOVADR2,[DI]

3.26

COUNT=100

BUFDBCOUNTNUP(?

MAXDB?

MOVSI,OFFSETBUF

MOVCX,COUNT

MOVAH,1

MOV[SI],AL

MOVSI,OFFSETBUF

LOP2:

CMPAL,[SI+1]

JANEXT2

XCHGAL,[SI+1]

NEXT2:

LOOPLOP2

MOVMAX,AL

3.27

BUFDB10DUP(?

STR1DB‘Doyouwantinputnumber(y/n)?

’,0DH,0AH,’$’

STR2DB‘Pleaseinputthenumbers’,0DH,0AH,’$’

MAXDB?

MINDB?

MOVDX,OFFSETSTR1

MOVAH,09H

MOVDX,OFFSETSTR2

MOVCX,10

MOVAH,1

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

当前位置:首页 > 解决方案 > 学习计划

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

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