微机原理习题参考答案黄冰版Word下载.docx
- 文档编号:19377452
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:38
- 大小:77.04KB
微机原理习题参考答案黄冰版Word下载.docx
《微机原理习题参考答案黄冰版Word下载.docx》由会员分享,可在线阅读,更多相关《微机原理习题参考答案黄冰版Word下载.docx(38页珍藏版)》请在冰豆网上搜索。
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]
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]
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)
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
01H
?
42H
41H
43H
1DH
1FH
(1)
(2)
BYTE_VARR
4CH〔76〕
57H
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
APPAYDB10DUP(29H)
ALPHADB-25,4,10,76,3
BUFFERDB100DUP(?
)
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
1)MOVCH,32HCH=32H
2)ADDCH,2AHCH=5CH
3)SHLCH,1CH=0B8H
4)MOV[BX][NUM+9],CHCH=0B8H
XDB?
YDB?
WDB?
ZDB?
RDB?
MOVAX,DATA_SEG
MOVAL,W
SUBAL,X
CBW
IDIV0AH
MOVR,AH
IMULY
IMULAX
MOVAH,4CH
STR1DB'
THISISADOG'
STR2DB'
THISISACOCK'
COUNTDB$-STR2
NUMDB?
CODE,DS:
MOVAX,DATA_SEG
MOVDS,AX
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:
STACKSEGMENTSTACK
DB256DUP〔?
STACKENDS
BUFDB‘Thisisastring’,’$’
DATAENDS
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
INT21H
DATADB?
DATBDB?
DATCDB?
DATDDB?
CMPDATA,0
JZNEXT
CMPDATB,0
JZNEXT
CMPDATC,0
MOVAL,DATA
ADDAL,DATB
ADCAL,DATC
MOVDATD,AL
JMPDONE
MOVDATA,0
MOVDATB,0
MOVDATC,0
3.22程序段是将十六进制数的ASSII码转化为十六进制数.本例是将大写字母A的ASCII变为十六进制数,将结果存入字符变量HEXNUM中。
HEXNUM变量中原来的内容未知,程序段执行后的内容是字符A的十六进制数0A
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]
COUNT=100
BUFDBCOUNTNUP(?
MAXDB?
MOVSI,OFFSETBUF
MOVCX,COUNT
MOVAH,1
MOV[SI],AL
LOOPLOP1
MOVSI,OFFSETBUF
LOP2:
CMPAL,[SI+1]
JANEXT2
XCHGAL,[SI+1]
NEXT2:
LOOPLOP2
MOVMAX,AL
BUFDB10DUP(?
STR1DB‘Doyouwantinputnumber(y/n)?
’,0DH,0AH,’$’
STR2DB‘Pleaseinputthenumbers’,0DH,0AH,’$’
MAXDB?
MINDB?
MOVDX,OFFSETSTR1
MOVAH,09H
MOVDX,OFFSETSTR2
MOVCX,10
MOVAH,1
MOVCX,9
LOP3:
CMPAL,[SI+1]
JBNEXT3
NEXT3:
LOOPLOP3
MOVMIN,AL
MOVAH,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 习题 参考答案 黄冰版