清华大学出版社微机原理汇编与接口技术答案.docx
- 文档编号:12201967
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:149
- 大小:1.25MB
清华大学出版社微机原理汇编与接口技术答案.docx
《清华大学出版社微机原理汇编与接口技术答案.docx》由会员分享,可在线阅读,更多相关《清华大学出版社微机原理汇编与接口技术答案.docx(149页珍藏版)》请在冰豆网上搜索。
清华大学出版社微机原理汇编与接口技术答案
1-10AH,40H,4EH,50H,5DH,64H,7DH,FFH
1-244,100,213,256,888,1278,3245
1-3
十进制数
原码
补码
十进制数
原码
补码
18
12
12
928
03A0
03A0
18
92
EE
928
83A0
FC60
30
1E
1E
8796
225C
225C
30
9E
E2
8796
A25C
DDA4
347
015B
015B
65530
0000FFFA
0000FFFA
347
815B
FEA5
65530
8000FFFA
FFFF0006
1-4用十进制数写出下列补码表示的机器数的真值:
27,113,128,8,14717,31467,27824,12478
1-5
溢出;
溢出
无溢出
无溢出
1-6
00AAH,803BH,FF88H。
1-7将下列各组二进制数进行“与”运算。
(1)DAH∧99H
(2)BAH∧56H(3)95H∧FFH
(1)11011010∧10011001
解:
11011010∧10011001=10011000
(2)10111100∧01010110
解:
10111100∧01010110=00010100
(3)10010101∧1111111
解:
10010101∧11111111=10010101
1-8将下列各组二进制数进行“或”运算。
(1)DAH∨99H
(2)F0H∨5AH(3)C6H∨45H
(1)11011010∨10011001
解:
11011010∨10011001=11011011
(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
8000
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:
0000H
MOV[DI],DL
1000H:
0000H
MOVES:
[SI],BL
2000H:
0000H
ADD[BP+500H],AH
0FC0H:
0500H
段地址在SS
SUB[SI300H],AL
1000H:
FD00H
300H=FD00H
MOV[DI+1000H],DL
1000H:
1000H
MOV[BX8],CL
1000H:
FFF8H
8=FFF8H
MOVES:
[DI+1000H],CH
2000H:
1000H
MOV[BP+SI],DH
0FC0H:
0000H
段地址在SS
MOV[BX+DI],DL
1000H:
0000H
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]
ADCAH,0
(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
MOVAL,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
SHLAX,CL;将AX再乘以4
ADDAX,DX
2.10
数据的存储形式:
(2)
变量名
偏移地址(H)
变量的值(H)
S1
0000
00
S2
0006
31
NB
000B
02
NW
000E
0078
P
0012
FFFF
(3)
程序段
目的寄存器的值
源操作数的寻址方式
MOVBX,OFFSETS1+3
0003
立即寻址
MOVSI,OFFSETS2
0006
立即寻址
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
SHLAX,1
RCLDX,1
RCLSECOND+4,1
MOVWRORDPTRSECOND,AX
MOVWORDPTRSECOND+2,DX
ret
startendp
codeends
endstart
2.12
stacksegmentstackstack
dw32dup(0)
stackends
datasegment
FIRSTDD0A46E5F90H
THIRDDB4DUP(0)
dataends
codesegment
startprocfar
assumess:
stack,cs:
code,ds:
data
pushds
subax,ax
pushax
movax,data
movds,ax
MOVAX,WORDPTRFIRST
MOVDX,WORDPTRFIRST+2
SARDX,1
RCRAX,1
SARDX,1
RCRAX,1
MOVWORDPTRTHIRD,AX
MOVWORDPTRTHIRD+2,DX
ret
startendp
codeends
endstart
2.13
stacksegmentstackstack
dw32dup(0)
stackends
datasegment
FIRSTDD0A46E5F90H
FORTHDB4DUP(0)
dataends
codesegment
startprocfar
assumess:
stack,cs:
code,ds:
data
pushds
subax,ax
pushax
movax,data
movds,ax
MOVAX,WORDPTRFIRST
NOTAX
MOVWORDPTRFORTH,AX
MOVAX,WORDPTRFIRST+2
NOTAX
MOVWORDPTRFIRST+2,AX
ADDWORDPTRFORTH,1
ADCWORDPTRFORTH+2,0
ret
startendp
codeends
endstart
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
stacksegmentstackstack
dw32dup(0)
stackends
datasegment
BVARDB99H
dataends
codesegment
beginprocfar
assumess:
stack,cs:
code,ds:
data
pushds
subax,ax
pushax
movax,data
movds,ax
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
stacksegmentstackstack
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
AAD
MOVDX,AX
MOVAX,W1
AAD
SUBAX,DX
AAM
MOVBYTEPTRB3,AX
3-4
stacksegmentstackstack
dw32dup(0)
stackends
datasegment
D1DD06070809H
D2DD04050607H
OBFDB6DUP(0)
dataends
codesegment
beginprocfar
assumess:
stack,cs:
code,ds:
data
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
DECDI
MOVBYTEPTR[DI],1
N5:
MOVDX,DI
MOVAH,9
INT21H
ret
beginendp
codeends
endbegin
3-5
stacksegmentstackstack
dw32dup(0)
stackends
datasegment
W1DW8931H
W2DW5678H
OBFDB6DUP(0)
dataends
codesegment
beginprocfar
assumess:
stack,cs:
code,ds:
data
pushds
subax,ax
pushax
movax,data
movds,ax
MOVDI,0
MOVAL,BYTEPTRW1;AL=31H
ADDAL,BYTEPTRW2;AL=A9H,CF=0,AF=0
DAA;AL=09H,CF=1
MOVAH,AL
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
AGAIN:
MOVDL,0FH
ANDDL,AL
ADDDL,30H
DECDI
MOV[DI],DL
SHRAX,CL
ANDAX,AX
JNZAGAIN
POPF
JNCOUTPUT
DECDI
MOVBYTEPTR[DI],1
OUTPUT:
MOVDX,DI
MOVAH,9
INT21H
beginendp
codeends
endbegin
3-6
stacksegmentstackstack
dw32dup(0)
stackends
datasegment
BVARDB99H
OBUFDB4DUP(0)
dataends
codesegment
beginprocfar
assumess:
stack,cs:
code,ds:
data
pushds
subax,ax
pushax
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
INT21H
ret
beginendp
codeends
endbegin
将8位二进制数转换为十进制数也可以用除10取余法实现。
转换程序段如下:
MOVAL,BVAR
XORAH,AH;将8位二进制数扩展为16位(无符号数扩展)
MOVDL,10
DIVDL
ADDAH,30H;将第一个余数即个位变为ASCII码
MOVOBUF+2,AH
XORAH,AH;将AL中的二进制数扩展为16位
DIVDL
ADDAX,3030H;AH为十位,AL为百位
MOVWORDPTROBUF,AX
MOVOBUF+3,$
还可以用左移二进制数的方法将二进制数转换为十进制数:
XORAX,AX;清0AX
MOVCX,8;左移二进制数8次
AGAIN:
SHLBVAR,1
ADCAL,AL
DAA
ADCAH,0;AH的值小于等于2不需校正
LOOPAGAIN
ADDAH,30H;百位转换为ASCII码
MOVOBUF,AH
MOVAH,AL;保存十位和个位
MOVCL,4
SHRAL,CL;BCD数十位移至AL低4位
ANDAH,OFH;BCD数个位在AH低4位
ADDAX,3030H;个位和十位转换为ASCII码
MOVWORDPTROBUF+1,AX
MOVOBUF+3,$
以二进制数11111101B转换为BCD数0253H为例,说明转换的过程,全过程如下图所示。
3-7
stacksegmentstackstack
dw32dup(0)
stackends
datasegment
TABDW0
DB0$
DW1
DB1$
DW8
DB8$
┇
DW64000
DB64000$
LFZDW0
IBUFDB3,0,3DUBP(0)
dataends
codesegment
beginprocfar
assumess:
stack,cs:
code,ds:
data
pushds
subax,ax
pushax
movax,data
movds,ax
MOVDX,OFFSETIBUF
MOVAH,10
INT21H
MOVAH,2
MOVDL,0AH
INT21H
MOVAX,WORDPTRIBUF+2;个位送AH,十位送AL
XCHGAH,AL;个位与十位交换
CMPIBUF+1,2;判别N是一位数还是二位数
JECOM
MOVAL,AH
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码
MOVAH,9
INT21H
ret
beginendp
codeends
endbegin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 清华大学出版社 微机原理汇编与接口技术答案 微机 原理 汇编 接口 技术 答案