微机原理习题参考答案黄冰版.docx

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

微机原理习题参考答案黄冰版.docx

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

微机原理习题参考答案黄冰版.docx

微机原理习题参考答案黄冰版

微机原理与接口技术

第一章绪论

①[+65]10=01000001B[+65]补=[+65]原=01000001B

②[+115]10=01110011B[+115]补=[+115]原=01110011B

③[-65]10=11000001B[-65]补=10111111B

[-115]10=11110011B[-115]补=10001101B

方法:

正数的原码、反码、补码相同

负数的补码在原码的基础上除过符号外,先取反,再加1。

①[+120]10=0000000001111000B[+120]补=[+120]原=000000001111000B

②[-120]10补

③[+230]10=0000000011100110B[+230]补=[+230]原=0000000011100110B

④[-230]10补

方法:

与上题相同,只是扩展了位数,用16位表示

①55〔00110111〕②89〔01011001〕③-115〔11110011〕④-7

总结:

知道补码,求原码(或数值)的方法:

如果是正数,直接转换。

如果是负数用以下三种方法:

1根据[[X]补]补=X求得

例如10001101各位取反11110010加一11110011转换-115

2

求补的逆运算

例如:

11111001先减一11111000各位取反10000111转换-7

③-(模+补码转换结果)

例如:

10001101转换-13模+补码转换结果128-13=115加负号–115

此题问题不太明确

例如:

如果手边有手册或是知道产品的型号,就可从手册中查到微处理器的处理位数。

也可以根据系统总线得知。

因为系统总线是公共的数据通道,表现为数据传输位数和总线工作时钟频率。

第二章intel8086微处理器

2.275422H字节单元:

9CH字单元:

249CH

75424H字节单元:

5DH字单元:

0E65Dh

根据物理地址=段地址*10H+偏移地址得到:

段地址

偏移地址

物理地址

1000H

117AH

1117AH

1025H

0F2AH

1117AH

1109H

00EAH

1117AH

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

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

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]

寄存器寻址

寄存器间接寻址

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

指令

源操作数寻址方式

物理地址

MOVAX,00ABH

立即数寻址

跟随在指令后,有cs:

ip决定

MOVAX,BX

寄存器寻址

在寄存器中

MOVAX,[100H]

直接寻址

2000H×10H+100H=20100H

MOVAX,[BX]

寄存器间接寻址

2000H×10H+0100H=20100H

MOVAX,[BP]

寄存器间接寻址

1500H×10H+0010H=15010H

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

带位移的基址寻址

2000H×10H+0100H+0AH=2010AH

MOVAX,[BX][SI]

基址变址寻址

2000H×10H+0100H+00A0H=201A0H

MOVAX,VAL

直接寻址

2000H×10H+0050H=20050H

MOVAX,ES:

[BX]

寄存器间接寻址

2100H×10H+0100H=21100H

MOVAX,[SI]

寄存器间接寻址

2000H×10H+00A0=200A0H

MOVAX,VAL[BX]

带位移的基址寻址

2000H×10H+0100H+0050H=20150H

MOVAX,VAL[BX][SI]

带位移的基址变址寻址

2000H×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

1FFCH

AX=5566H

BX=3344H

POPCX

1FFEH

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

AX=8000H

ADDAX,8000H

AX=0000H

ORAX,0BFDFH

AX=0BFDFH

ANDAX,0EBEDH

AX=0ABCDH

XCHGAH,AL

AX=0CDABH

SALAX,1

AX=9B56H(CF=1)

RCLAX,1

AX=36ADH(AF=1)

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

0001001000110100B

-0100101011100000B[1011010100100000B]补码形式

1100011101010100B〔0C754H〕AF=0SF=1ZF=0CF=1OF=0PF=0

1001000010010000B

-0100101011100000B[1011010100100000B]补码形式

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

1BX=009AH

2BX=0061H

3BX=00FBH

4BX=001CH

5BX=0000H

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

BX=0110110100010110=6D16H

BX=0000000011011010=00DAH

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

方法一:

循环移位方法二:

逻辑右移

MOVCL,04HMOVCL,04H

ROLAL,CLSHRAL,CL

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

3.1

1〕AX=0001H;

2〕AX=0002H

3〕CX=0014H

4〕DX=0028H

5〕CX=0001H

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

00H

00H

01H

00H

00H

00H

00H

01H

00H

00H

00H

01H

00H

00H

00H

01H

00H

00H

00H

01H

42H

41H

44H

43H

1DH

1FH

(1)

(2)

BYTE_VARR

41H

42H

43H

44H

4CH〔76〕

57H

01H

03H

01H

03H

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

1〕MOVBX,OFFSETBUF1

2)MOVCLBYTEPTR[BUF2+2]

3)MOV[BUF3+9],A6H

4)COUNTEQUBUF3-BUF1

DATA_SEGSEGMENT

APPAYDB10DUP(29H)

ALPHADB-25,4,10,76,3

BUFFERDB100DUP(?

DATA_SEGENDS

DATA_SEGSEGMENT

BCD1DB?

?

BCD2DB?

DATA_SEGENDS

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

1)MOVCH,32HCH=32H

2)ADDCH,2AHCH=5CH

3)SHLCH,1CH=0B8H

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

DATA_SEGSEGMENT

XDB?

YDB?

WDB?

ZDB?

RDB?

DATA_SEGENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA_SEG,ES:

DATA_SEG

START:

MOVAX,DATA_SEG

MOVDS,AX

MOVDS,AX

MOVAL,W

SUBAL,X

CBW

IDIV0AH

MOVR,AH

IMULY

IMULAX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

DATA_SEGSEGMENT

STR1DB'THISISADOG'

STR2DB'THISISACOCK'

COUNTDB$-STR2

NUMDB?

DATA_SEGENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA_SEG,ES:

DATA_SEG

START:

MOVAX,DATA_SEG

MOVDS,AX

MOVDS,AX

MOVES,AX

MOVCH,0

MOVCL,COUNT

CLD

MOVSI,OFFSETSTR1

MOVDI,OFFSETSTR2

REPZCMPSB

ANDSI,000FH

MOVAX,SI

MOVNUM,AL

CODEENDS

ENDSTART

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

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,n

MOVSI,OFFSETBUF

LOP1:

MOVAL,[SI]

INCSI

CMPAL,O

JGENEXT

INCSUM

NEXT:

LOOPLOP1

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3.18

DATASEGMENT

BUFDWnDUP(?

BUF1DWnDUP(?

BUF2DWnDUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,n

MOVSI,OFFSETBUF

MOVDI,OFFSETBUF1

MOVBX,OFFSETBUF2

LOP1:

MOVAX,[SI]

INCSI

INCSI

CMPAX,0000H

JGENEXT1

MOV[BX],AX

ADDBX,02H

JMPLOP2

NEXT1:

MOV[DI],AX

ADDDI,2

LOP2:

LOOPLOP1

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

STACKSEGMENTSTACK

DB256DUP〔?

STACKENDS

DATASEGMENT

BUFDB‘Thisisastring’,’$’

DATAENDS

CODESEGMENT

ASSUMECS:

CODE.DS:

DATA;SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETBUF

TACKCHAR:

MOVDL,[SI]

CMPDL,’$’

JZDONE

CMPDL,’a’

JBNEXT

SUBDL,20H

NEXT:

MOVAH,02H

INT21H

INCSI

MPTAKECHAR

DONE:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3.20

DATA_SEGSEGMENT

DATXDB?

DATYDB?

DATZDB?

DATA_SEGENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA_SEG

START:

MOVAX,DATA_SEG

MOVDS,AX

MOVAL,DATX

MOVBL,DATY

CMPAL,BL

JSNEXT

MOVDATZ,AL

JMPDONE

NEXT:

MOVDATZ,BL

DONE:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

DATA_SEGSEGMENT

DATADB?

DATBDB?

DATCDB?

DATDDB?

DATA_SEGENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA_SEG

START:

MOVAX,DATA_SEG

MOVDS,AX

CMPDATA,0

JZNEXT

CMPDATB,0

JZNEXT

CMPDATC,0

JZNEXT

MOVAL,DATA

ADDAL,DATB

ADCAL,DATC

MOVDATD,AL

JMPDONE

NEXT:

MOVDATA,0

MOVDATB,0

MOVDATC,0

DONE:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

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

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

DATA_SEGSEGMENT

N=10

DATA1DBNDUP(?

DATA2DBNDUP(?

ADR1DW?

ADR2DW?

DATA_SEGENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA_SEG

START:

MOVAX,DATA_SEG

MOVDS,AX

LEASI,DATA1

LEADI,DATA2

MOVCX,N

LOP1:

MOVAH,[SI]

CMPAH,[DI]

JNZNOTEQU

INCSI

INCDI

LOOPLOP1

MOVAH,0FFH

SAHF

JMPDONE

NOTEQU:

MOVAH,0

SAHF

MOVADR1,[SI]

MOVADR2,[DI]

DONE:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

DATA_SEGSEGMENT

COUNT=100

BUFDBCOUNTNUP(?

MAXDB?

DATA_SEGENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA_SEG

START:

MOVAX,DATA_SEG

MOVDS,AX

MOVSI,OFFSETBUF

MOVCX,COUNT

LOP1:

MOVAH,1

INT21H

MOV[SI],AL

INCSI

LOOPLOP1

MOVSI,OFFSETBUF

MOVCX,COUNT

MOVAL,[SI]

LOP2:

CMPAL,[SI+1]

JANEXT2

XCHGAL,[SI+1]

INCSI

NEXT2:

LOOPLOP2

MOVMAX,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

DATA_SEGSEGMENT

BUFDB10DUP(?

STR1DB‘Doyouwantinputnumber(y/n)?

’,0DH,0AH,’$’

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

MAXDB?

MINDB?

DATA_SEGENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA_SEG

START:

MOVAX,DATA_SEG

MOVDS,AX

MOVDX,OFFSETSTR1

MOVAH,09H

INT21H

MOVDX,OFFSETSTR2

MOVAH,09H

INT21H

MOVSI,OFFSETBUF

MOVCX,10

LOP1:

MOVAH,1

INT21H

MOV[SI],AL

INCSI

LOOPLOP1

MOVSI,OFFSETBUF

MOVCX,9

MOVAL,[SI]

LOP2:

CMPAL,[SI+1]

JANEXT2

XCHGAL,[SI+1]

INCSI

NEXT2:

LOOPLOP2

MOVMAX,AL

MOVSI,OFFSETBUF

MOVCX,9

MOVAL,[SI]

LOP3:

CMPAL,[SI+1]

JBNEXT3

XCHGAL,[SI+1]

INCSI

NEXT3:

LOOPLOP3

MOVMIN,AL

MOVAH,

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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