微计算机原理第二版潘名莲习题答案48之后.docx
- 文档编号:3248410
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:20
- 大小:58.76KB
微计算机原理第二版潘名莲习题答案48之后.docx
《微计算机原理第二版潘名莲习题答案48之后.docx》由会员分享,可在线阅读,更多相关《微计算机原理第二版潘名莲习题答案48之后.docx(20页珍藏版)》请在冰豆网上搜索。
微计算机原理第二版潘名莲习题答案48之后
4-8试定义一个结构,它应包括一个学生的下列信息:
姓名、学号及三门课程的成绩。
然后给出3条结构预置语句,将3个学生的情况送入3个结构变量中。
解:
DATASEGMENT
STUDENTSTRUC
NAMEDB‘abcd’
NODB?
ENGDB?
MATDB?
PHYDB?
STUDENTENDS
S1STUDENT<‘ZHAN’,20H,78H,95H,80H>
S2STUDENT<‘WANG’,21H,88H,91H,90H>
S3STUDENT<‘LILI’,22H,79H,75H,70H>
DATAENDS
4-9试定义一条宏指令,它可以实现任一数据块的传送(假设无地址重叠),源地址、目的地址和块长度作为参数处理。
MOVDATAMACROSN,DN,CN
CLD
MOVSI,OFFSETSN
MOVDI,OFFSETDN
MOVCX,CN
REPMOVSDN,SN
ENDM
4-10设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误,并改正之。
(1)ADDVAR1,VAR2(无两内存单元加法指令)
(2)SUBAL,VAR1(字节变量不能和字变量直接相加)
(3)JMPLAB[SI](标号不是立即数)
(4)JNZVAR1(不是程序标号)
(5)JMPNEARLAB(同3)
(6)MOVAL,VAR2(AL不能存字变量)
解:
(1)MOVAX,VAR1
(2)MOVAH,0(3)JMPOFFSETLAB[SI]
ADDAX,VAR2SUBAX,VAR1
(4)MOVSI,VAR1(5)JMPNEARPTRLAB(6)MOVAX,VAR2
JNZTARGET
……
TARGET:
JMP[SI]
4-11已知数据定义如下,问L1和L2等于多少?
B1DB1,2,3,’123’
B2DB0
L1EQU$-B1
L2EQUB2-B1
解:
$=7,∴$-B1=7-0=7
即L1等于7
L2=B2的偏移地址6-B1的偏移地址0=6
4-15用查表法将存放于数据段中的一个有序的十六进制数串(范围:
0~FH)翻译成ASCII码表仍放于数据段中。
解:
DATASEGMENT
XDHEXDB0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
TBASCIIDB‘0123456789ABCDEF’
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
MAINPROCFAR
START:
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVCX,16
MOVSI,OFFSETXDHEX
MOVBX,OFFSETTBASCII
MOVAH,0
AGAIN:
MOVAL,[SI]
MOVDI,AX
MOVAL,[BX+DI]
MOV[SI],AL
INCSI
LOOPAGAIN
RET
MAINENDP
CODEENDS
ENDSTART
4-16试编写一程序,把X和Y中的大者存于BIG单元,若X=Y,则把其中之一存入BIG单元。
解:
DATASEGMENT
XDW?
YDW?
BIGDW?
DATAENDS
;------------------------------
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
MAINPROCFAR
START:
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVAX,X
CMPAX,Y
JNCSTOBIG;无符号数判断,有符号数用JGE
MOVAX,Y
STOBIG:
MOVBIG,AX
RET
MAINENDP
CODEENDS
ENDMAIN
4-17试编写一程序,比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同显示“MATCH”,反之,则显示“NOMATCH”。
解:
DATASEGMENT
STRING1DB50DUP(?
)
STRING2DB50DUP(?
)
MATDB‘MATCH$’
NMATDB‘NOMATCH$’
DATAENDS
;------------------------------
CODEEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
MAINPROCFAR
START:
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVCX,LENGTHSTRING1
LEASI,STRING1
LEADI,STRING2
LEADX,MAT
CLD
REPECMPSB
JEPLAY
LEADX,NOMAT
PLAY:
MOVAH.09
INT21H
RET
MAINENDP
CODEENDS
ENDMAIN
4-19假设已编好5个乐曲程序,它们的入口地址(含段首址和偏移地址)存放在数据段中的跳越表MUSICTAB中。
试编写一个管理程序,其功能是:
根据键盘输入的乐曲编号00~04转到所点乐曲入口,执行乐曲程序。
解:
DATASEGMENT
MUSICTABDWOFFSETMUSIC0,SEGMUSIC0
DWOFFSETMUSIC1,SEGMUSIC1
DWOFFSETMUSIC2,SEGMUSIC2
DWOFFSETMUSIC3,SEGMUSIC3
DWOFFSETMUSIC4,SEGMUSIC4
DATAENDS
;------------------------------
CODEEGMENT
ASSUMECS:
CODE,DS:
DATA
MAINPROCFAR
START:
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
;---------------------------------------------------------------
KEYIN:
MOVAH,1
INT21H
SUBAL,30H
MOVCL,4
ROLAL,CL
MOVBL,AL
MOVAH,1
INT21H
SUBAL,30H
ADDAL,BL
MOVAH,0
ADDAX,AX
ADDAX,AX
LEABX,MUSICTAB
MOVSI,AX
JMPDWORDPTR[BX][SI];见教科书116页,④段间间接寻址
MUSIC0:
…
MUSIC1:
…
MUSIC2:
…
MUSIC3:
…
MUSIC4:
…
EXIT:
RET
MAINENDP
CODEENDS
ENDMAIN
4-21在数据段中存有一字符串(≤80个字符),以回车CR结束。
编一程序统计此字符串的长度,并将它存入数据区LENTH单元,也显示在屏幕上。
解:
设字符串为STRING字节单元开始,程序采用DO_WHILE的循环结构,CX寄存器用作字符串长度计数。
循环结束条件两个:
(1)找到CR,屏幕上显示字符串长度-LENTH。
(2)未找到CR,屏幕上显示“ERROR”。
DATASEGMENT
STRINGDB'12345678'
DB0DH
DB71DUP(?
)
LENTHDB?
ERRDB'ERROR$'
DATAENDS
;-------------------------------------
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
MAINPROCFAR
START:
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVES,AX
;-------------------------------------------------
MOVDI,OFFSETSTRING
CLD
MOVCX,80
MOVAL,0DH
REPNZSCASB
JNZPLAYER
MOVAX,80
SUBAX,CX
MOVCL,10
DIVCL
MOVDL,AL
ORDL,30H
PUSHAX
MOVAH,2
INT21H
POPAX
MOVDL,AH
ORDL,30H
MOVAH,02
INT21H
RET
PLAYER:
MOVDX,OFFSETERR
MOVAH,9
INT21H
RET
;----------------------------------------------------
MAINENDP
CODEENDS
ENDMAIN
4-22试用串操作指令将一个数组BLOCK(均为字节数)中的奇数和偶数分开存放。
解:
1设数组BLOCK在数据段,程序运行后把数组中的奇数存放在数据段数组PODATA、偶数存放在数据段数组PEDATA中。
2程序分两次扫描,第一次搜索奇数,并存放于PODATA中、第二次搜索偶数,并存放于PEDATA中。
3两次搜索均用FOR语句结构。
DATA SEGMENT
BLOCK DB 1,2,3,4,5,6,7,8,9,90,21,33
COUNT EQU $-BLOCK
PODATA DB COUNT DUP(?
)
PEDATA DB COUNT DUP(?
)
DATA ENDS
;---------------------------------
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:
CODE,DS:
DATA,DS:
DATA
START:
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV ES,AX
;---------------------------------
MOV SI,OFFSET BLOCK
MOV DI,OFFSET PODATA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 原理 第二 版潘名莲 习题 答案 48 之后