清华大学出版社微机原理汇编与接口技术答案Word格式.docx

上传人:b****1 文档编号:4392003 上传时间:2023-05-03 格式:DOCX 页数:149 大小:1.25MB
下载 相关 举报
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第1页
第1页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第2页
第2页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第3页
第3页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第4页
第4页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第5页
第5页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第6页
第6页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第7页
第7页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第8页
第8页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第9页
第9页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第10页
第10页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第11页
第11页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第12页
第12页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第13页
第13页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第14页
第14页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第15页
第15页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第16页
第16页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第17页
第17页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第18页
第18页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第19页
第19页 / 共149页
清华大学出版社微机原理汇编与接口技术答案Word格式.docx_第20页
第20页 / 共149页
亲,该文档总共149页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

清华大学出版社微机原理汇编与接口技术答案Word格式.docx

《清华大学出版社微机原理汇编与接口技术答案Word格式.docx》由会员分享,可在线阅读,更多相关《清华大学出版社微机原理汇编与接口技术答案Word格式.docx(149页珍藏版)》请在冰点文库上搜索。

清华大学出版社微机原理汇编与接口技术答案Word格式.docx

(2)11110000∨01011010

11110000∨01011010=11111010

(3)11000110∨00000000

11000110∨00000000=11000110

1-9

1000011001011010=11011100

1011110010101010=00010110

1101101010011001=01000011

1-10

压缩BCD数

非压缩BCD数

ASCII码

38

38H

0308H

3338H

97

97H

0907H

3937H

105

105H

010005H

313035H

255

255H

020505H

323535H

483

483H

040803H

343833H

764

764H

070604H

373634H

1000

1000H

01000000H

31303030H

1025

1025H

01000205H

31303235H

1-11

43,126,8192,30116

1-12A8H

1-17

0914H:

00F2H,09232H

1-18

DS=2F5FH时,物理地址变为37820H。

不同段地址的数据段示意图如下图2所示。

2.3

BX=5566HAX=3344HCX=5566HDX=1122H

堆栈存储器的逻辑地址、堆栈指示器的指向及栈区的内容如下图所示。

2.40036H,003AH

2.5

程序段

AX

MOVAX,0

0000

DECAX

FFFF

ADDAX,7FFFH

7FFE

ADCAX,1

8000

NEGAX

ORAX,3FDFH

BFDF

ANDAX,0EBEDH

ABCD

XCHGAH,AL

CDAB

SALAX,1

9B56

RCLAX,1

36AD

2.6。

指令

存储器操作数的逻辑地址

注释

SUB[BP],AL

0FC0H:

0000H

段地址在SS

MOV[BX],BH

1000H:

MOV[DI],DL

MOVES:

[SI],BL

2000H:

ADD[BP+500H],AH

0500H

SUB[SI300H],AL

FD00H

300H=FD00H

MOV[DI+1000H],DL

MOV[BX8],CL

FFF8H

8=FFF8H

[DI+1000H],CH

MOV[BP+SI],DH

MOV[BX+DI],DL

2.7

0000H,0880H,0081H,0800H

2.8NEGAX,ANDAX,7FFFH

2.9

(1)MOVCL,4

SHLAX,CL

SHLBL,CL

MOVAL,BL

SHRDH,CL

ORAL,DH

(2)XORCX,0FF0H

(3)MOVAL,[BX]

MOVAH,0

ADDAL,[BX+1]

ADCAH,0

ADDAL,2[BX]

(4)方法1:

MOVAL,[BX]

XCHGAL,[BX+3]

MOV[BX],AL

MOVAL,1[BX]

XCHGAL,2[BX]

MOV1[BX],AL

方法2:

MOVAX,[BX]

XCHGAH,2[BX]

XCHGAL,3[BX]

MOV[BX],AX

(5)XCHGBH,BL

ANDBL,0FH

MOVCL,4

SHRAL,CL

MOVDL,BH

ANDDL,0FH

SHRBH,CL

MOVCL,BH

(6)MOVAH,0;

将AL中的无符号数扩展成16位

MOVCL,2

SHLAX,CL;

将AX乘以4

MOVDX,AX

将AX再乘以4

ADDAX,DX

2.10

数据的存储形式:

(2)

变量名

偏移地址(H)

变量的值(H)

S1

00

S2

0006

31

NB

000B

02

NW

000E

0078

P

0012

(3)

目的寄存器的值

源操作数的寻址方式

MOVBX,OFFSETS1+3

0003

立即寻址

MOVSI,OFFSETS2

MOVCL,COUNT

0B

MOVBP,NW+2

FF00

直接寻址

MOVDX,WORDPTRNB

0202

MOVAL,[SI+3]

34

变址寻址

MOVAH,[SI+BX+1]

35

基址变址寻址

MOVCH,BYTEPTRNW+3

FF

(4)改正下列程序段中不正确指令的错误:

a.MOVAX,S1

b.MOVBP,OFFSETS2

MOVCL,[BP]

c.MOVSI,OFFSETNB

MOV[SI],+

d.MOVDL,NW+2

e.MOVDI,CH

f.MOVBX,OFFSETS1

MOVDH,BX+3

g.INCCOUNT

h.MOVNB,S2

i.MOVAX,[BX+S1]

j.ADDAX,[DX+NW]

a.MOVAX,WORDPTRS1

b.MOVBP,OFFSETS2

MOVCL,DS:

[BP]

c.MOVSI,OFFSETNB

MOVBYTEPTR[SI],+

d.MOVDL,BYTEPTRNW+2

e.XCHGCH,CL

MOVCH,0

MOVDI,CX

f.MOVBX,OFFSETS1

MOVDH,[BX+3]

g.错误指令。

在操作数中直接书写数值表达式COUNT+1

h.MOVAL,S2

MOVNB,AL

i.MOVAX,WORDPTRS1[BX]

jADDAX,[DI+NW]

2.11

stacksegmentstackstack

dw32dup(0)

stackends

datasegment

FIRSTDD0A46E5F90H

SECONDDB5DUP(0)

dataends

codesegment

startprocfar

assumess:

stack,cs:

code,ds:

data

pushds

subax,ax

pushax

movax,data

movds,ax

MOVAX,WORDPTRFIRST

MOVDX,WORDPTRFIRST+2

MOVSECOND+4,0

SHLAX,1

RCLDX,1

RCLSECOND+4,1

RCLSECOND+4,1

MOVWRORDPTRSECOND,AX

MOVWORDPTRSECOND+2,DX

ret

startendp

codeends

endstart

2.12

THIRDDB4DUP(0)

SARDX,1

RCRAX,1

MOVWORDPTRTHIRD,AX

MOVWORDPTRTHIRD+2,DX

2.13

FORTHDB4DUP(0)

MOVAX,WORDPTRFIRST

NOTAX

MOVWORDPTRFORTH,AX

MOVAX,WORDPTRFIRST+2

MOVWORDPTRFIRST+2,AX

ADDWORDPTRFORTH,1

ADCWORDPTRFORTH+2,0

2.14

数据段的内存映象图:

该程序的功能是将字节变量BUF中的两位BCD数以十六进制数形式显示出来。

具体显示是在下一行的行首显示(BUF)=78H。

3-1

1.AX=0048H,AX=0702H

2.AX=0059H,AX=0411H,AX=0107H,DL=04H

3.AX=0011H,AX=0107H

4.AX=005AH,AX=0900H,AX=0908H

5.AL=62H

6.AX=0248H

3-2

stackends

BVARDB99H

beginprocfar

stack,cs:

MOVAL,BVAR

MOVCL,4

SHRAL,CL

MOVAH,10

MULAH

ANDBVAR,0FH

ADDBVAR,AL

ret

beginendp

codeends

endbegin

先将2位压缩BCD数转换为非压缩BCD数,再用AAD指令将非压缩BCD数转换为二进制数:

MOVAL,BVAR

MOVAH,AL

MOVCL,4

SHRAH,CL

ANDAL,0FH

AAD

MOVBVAR,AL

3-3

dw32dup(0)

stackends

datasegment

W1DW0807H

W2DW0609H

B3DB2DUP(0)

dataends

codesegment

beginprocfar

assumess:

stack,cs:

code,ds:

data

pushds

subax,ax

pushax

movax,data

movds,ax

MOVAX,W1;

AX=0807H

SUBAL,BYTEPTRW2;

AL=FEH,CF=1

AAS;

AL=08H,AH=07H

MOVB3,AL

MOVAL,AH

SUBAL,W2+1

MOVB3+1,AL

ret

beginendp

codeends

endbegin

还可以用AAD指令将两个非压缩BCD数转换为二进制数,相减后再用AAM将差转换为非压缩BCD数:

MOVAX,W2

MOVDX,AX

MOVAX,W1

SUBAX,DX

AAM

MOVBYTEPTRB3,AX

3-4

D1DD06070809H

D2DD04050607H

OBFDB6DUP(0)

dataends

pushds

subax,ax

pushax

movax,data

movds,ax

MOVSI,0

MOVDI,OFFSETOBF+5

MOVBYTEPTR[DI],$

MOVCX,4

XORAH,AH

AGAIN:

MOVAL,BYTEPTRD1[SI]

ADDAL,BYTEPTRD2[SI]

ADDAL,AH

MOVAH,0

AAA

ADDAL,30H

DECDI

MOV[DI],AL

INCSI

LOOPAGAIN

ANDAH,AH

JZN5

MOVBYTEPTR[DI],1

N5:

MOVDX,DI

MOVAH,9

INT21H

3-5

W1DW8931H

W2DW5678H

assumess:

MOVDI,0

MOVAL,BYTEPTRW1;

AL=31H

ADDAL,BYTEPTRW2;

AL=A9H,CF=0,AF=0

DAA;

AL=09H,CF=1

MOVAL,BYTEPTRW1+1;

AL=89H

ADCAL,BYTEPTRW2+1;

AL=E0H,CF=0,AF=1

DAA;

AL=46H,CF=1

PUSHF

MOVDIOFFSETOBF+5

MOVBYTEPTR[DI],$

MOVCL,4

XCHGAH,AL

MOVDL,0FH

ANDDL,AL

ADDDL,30H

MOV[DI],DL

SHRAX,CL

ANDAX,AX

JNZAGAIN

POPF

JNCOUTPUT

MOVBYTEPTR[DI],1

OUTPUT:

endbegin

3-6

stacksegmentstackstack

dw32dup(0)

stackends

datasegment

BVARDB99H

OBUFDB4DUP(0)

dataends

codesegment

beginprocfar

assumess:

subax,ax

movax,data

movds,ax

MOVAL,BVAR;

二进制数送AL

MOVAH,0;

二进制数扩展为16位(无符号数扩展)

MOVDL,100

DIVDL

ADDAL,30H;

将百位变为ASCII码

MOVOBUF,AL;

存百位

MOVAL,AH;

将十位和个位的二进制数即余数送AL

AAM;

将AL中的二进制数转换为ASCIIBCD数

ADDAX,3030H;

将AX中的ASCIIBCD数变为ASCII码

MOVOBUF+1,AH

MOVOBUF+2,AL

MOVOBUF+3,$

MOVDX,OFFSETOBUF

MOVAH,9

beginendp

将8位二进制数转换为十进制数也可以用除10取余法实现。

转换程序段如下:

MOVAL,BVAR

XORAH,AH;

将8位二进制数扩展为16位(无符号数扩展)

MOVDL,10

ADDAH,30H;

将第一个余数即个位变为ASCII码

MOVOBUF+2,AH

将AL中的二进制数扩展为16位

AH为十位,AL为百位

MOVWORDPTROBUF,AX

还可以用左移二进制数的方法将二进制数转换为十进制数:

XORAX,AX;

清0AX

MOVCX,8;

左移二进制数8次

SHLBVAR,1

ADCAL,AL

DAA

ADCAH,0;

AH的值小于等于2不需校正

ADDAH,30H;

百位转换为ASCII码

MOVOBUF,AH

MOVAH,AL;

保存十位和个位

SHRAL,CL;

BCD数十位移至AL低4位

ANDAH,OFH;

BCD数个位在AH低4位

ADDAX,3030H;

个位和十位转换为ASCII码

MOVWORDPTROBUF+1,AX

MOVOBUF+3,$

以二进制数11111101B转换为BCD数0253H为例,说明转换的过程,全过程如下图所示。

3-7

TABDW0

DB0$

DW1

DB1$

DW8

DB8$

DW64000

DB64000$

LFZDW0

IBUFDB3,0,3DUBP(0)

MOVDX,OFFSETIBUF

MOVAH,10

MOVAH,2

MOVDL,0AH

MOVAX,WORDPTRIBUF+2;

个位送AH,十位送AL

XCHGAH,AL;

个位与十位交换

CMPIBUF+1,2;

判别N是一位数还是二位数

JECOM

XORAH,AH;

若N为一位数,则要清AH

COM:

ANDAX,0F0FH;

将AX中的ASCII码变为ASCIIBCD数

AAD;

将AX中的ASCIIBCD数变为二进制数

MOVCL,3

SHLAX,CL;

将AX中的二进制数乘以8

MOVBX,AX

MOVAX,TAB[BX]

MOVLFZ,AX

MOVDX,OFFSETTAB+2;

DX指向立方值的ASCII码

ADDDX,BX;

将DX下移8N,指向N的ASCII码

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

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2