微机原理与接口技术 第四章 课后答案.docx
- 文档编号:11250694
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:19
- 大小:19.41KB
微机原理与接口技术 第四章 课后答案.docx
《微机原理与接口技术 第四章 课后答案.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术 第四章 课后答案.docx(19页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术第四章课后答案
第四章参考答案
1.设下列指令中的所有标识符均是类型属性为字的变量,请指出下列指令中哪些是非法的指令?
错误的原因?
⑴MOVBP,AL
⑵MOVWORD_OP1,WORD_OP2
⑶MOVSAVE_WODR,DS
⑷MOVSP,SS:
DATA_WORD[BX][SI]
⑸MOV[BX][SI],2
解:
(1)非法。
源操作数与目的操作数类型不符。
00H
00H
00H
01H
00H
02H
00H
00H
00H
01H
00H
02H
00H
00H
00H
01H
00H
02H
00H
00H
00H
01H
00H
02H
00H
00H
00H
01H
00H
02H
?
?
FBH
FFH
59H
42H
45H
54H
56H
02H
(2)合法。
(3)合法。
(4)合法。
(5)非法。
需说明操作数类型。
2.设VAR1和VAR2为字变量,LAB为标号,
试指出下列指令的错误之处:
⑴ADDVAR1,VAR2
⑵SUBAL,VAR1
⑶JMPLAB[SI]
⑷JNZVAR1
⑸JMPNEARLAB
解:
(1)两个操作数均为符号地址。
(2)两个操作数的类型不同。
(3)
(4)
(5)
3.画图说明下列语句所分配的存储空间及初始化的数据值。
⑴BYTE_VARDB‘BYTE’,12,-12H,3DUP(0,?
2DUP(1,2),?
)
41H
59H
54H
45H
0CH
F4H
00H
?
01H
02H
01H
02H
00H
?
01H
02H
01H
02H
⑵WORD_VARDW5DUP(0,1,2),?
-5‘BY’,’TE’,256H
解:
(1)
(2)
4.设程序中的数据定义如下:
PARTNODW?
PNAMEDB16DUP(?
)
COUNTDD?
PLENTHEQU$-PARTNO
问PLENTH的值为多少?
它表示什么意义?
解:
PLENTH的值为22(16H)。
表示当前位置与PARTNO之间有22个字节空间。
5.设程序中的数据定义如下:
LNAMEDB30DUP(?
)
ADDRESSDB30DUP(?
)
CITYDB15DUP(?
)
CODE_LISTDB1,7,8,,3,2
⑴用一条MOV指令将LNAME的偏移地址放入AX;
⑵用一条指令将CODE_LIST的头两个字节的内容放入SI:
⑶写一条伪操作使CODE_LENGTH的值等于CODE_LIST域的实际长度。
解:
(1)MOVAX,OFFSETLNAME
(2)MOVSI,WORDCODE_LIST
(3)CODE_LENGTHEQU$-CODE_LIST
6.对于下面数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?
FLDBDB?
TABLEADW20DUP(?
)
TABLEBDB‘ABCD’
⑴MOVAX,TYPEFLDB
⑵MOVAX,TYPETABLEA
⑶MOVCX,LENGTHTABLEA
⑷MOVDX,SIZETABLEA
⑸MOVCX,LENGTHTABLEB
解:
(1)AX=1
(2)AX=2
(3)CX=14H
(4)DX=28H
(5)CX=1
7.内存的一个区域中有100个字符是用小写字母表示的,试编写一个程序,把它们转换成大写字母,并送屏幕显示。
解:
参考程序如下:
MOVCX,0064H
AA:
MOVDL,[SI]
ADDDL,20H
MOV[SI],DL
MOVAH,02H
INT20H
INCSI
LOOPAA
HLT
8.AX寄存器中有4位压缩方式的BCD码数字,试编写一个程序将4个数字分开,并分别存入BH、BL、CH和CL寄存器中。
……
MOVDX,AX
MOVCL,04H
ROLAX,CL
ANDDX,0F0FH
MOVBL,DH
MOVCL,DL
ANDAX,0F0FH
MOVBH,AL
MOVCH,AH
……
9.编一段程序,使在用STRING开头的数据区中查找字符串WE,数据区以$符作为结束符号。
如查到,给出字符所在地址;如查不到,给出NOTFOUND提示。
(假设最多有1个WE字符串)
解:
参考程序如下:
DATASEGMENT
STRING:
DB‘ABCWE5$’
RE:
DB‘NOTFOUND$’
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
BEGIN:
PUSHDS
XORAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
LEASI,STRING
AA:
MOVAL,[SI]
CMPAL,’$’
JZNEXT
CMPAAL,’W’
JNZNEXT1
INCSI
MOVAL,[SI]
CMPAL,’E’
JNZAA
DECSI
MOVBX,SI
MOVCL,04H
MOVDH,04H
AA1:
ROLBX,CL
MOVDL,BL
ANDDL,0FH
MOVAH,02H
INT20H
DECDH
JNZAA1
JMPNEXT2
NEXT1:
INCSI
JMPAA
NEXT:
LEADX,RE
MOVAH,09H
INT20H
NEXT2:
MOVAH,4CH
INT21H
CODE:
ENDS
ENDBEGIN
10.从键盘输入的数字和字符都是以ASCII码方式存入内存,现要求从键盘输入两位16进制数,并在屏幕上显示出对应的二进制数。
试编一个程序实现此功能。
解:
参考程序段如下:
MOVAH,07H
INT20H
CMPAL,3AH
JCBB
SUBAL,07H
BB:
SUBAL,30H
MOVBH,AL
INT20H
CMPAL,3AH
JCBB1
SUBAL,07H
BB1:
SUBAL,30H
MOVBL,AL
MOVCX,0016H
AA:
SHLBX,1
JCNEXT1
MOVDL,’0’
MOVAH,02H
INT20H
LOOPAA
HLT
NEXT1:
MOVDL,’1’
MOVAH,02H
INT20H
LOOPAA
HLT
11.一个班级共有学生45人,在内存中有一个按学号排列的成绩表。
试编一个程序,实现按成绩高低并注有学号的有序表,如果有成绩相同的则按学号先后排序。
解:
假设:
成绩表的起始地址符号:
ABC,学号的起始地址符号:
ABC1,参考程序段如下:
LEASI,ABC
MOVDI,OFFSETABC1
MOVCX,002DH
DECCX
AA:
MOVBX,CX
AA1:
MOVAL,[SI]
CMPAL,[SI+1]
JGEAA2
XCHGAL,[SI+1]
MOV[SI],AL
MOVAH,[DI]
XCHGAH,[DI+1]
MOV[DI],AH
AA2:
ADDSI,0001H
ADDDI,0001H
LOOPAA1
MOVCX,BX
LOOPAA
HLT
12.编一个程序,使从键盘上输入一串字符,以回车符结束,然后按字母、数字和其它符号三类统计各自的个数,在屏幕上显示统计结果。
解:
注释:
以下程序中BL用于存放统计的字母个数,字母的ASCII码区间:
41H~5AH及61H~7AH;BH用于存放统计的数字个数,数字的ASCII码区间:
30H~39H;DH用于存放统计的其它符号的个数。
MOVBH,00H
MOVSI,1000H
AA:
MOVAH,07H
INT20H
MOV[SI],AL
CMPAL,’$’
JZNEXT
INCSI
INCBH
JMPAA
NEXT:
MOVCL,BH
MOVCH,00H
MOVSI,1000H
MOVBX,0000H
MOVDH,00H
AA0:
MOVAL,[SI]
CMPAL,30H
JNCNEXT1
AA1:
INCDH
INCSI
LOOPAA0
JMPNEXTE
NEXT1:
CMPAL,3AH
JNCNEXT2
INCBH
INCSI
LOOPAA0
JMPNEXTE
NEXT2:
CMPAL,41H
JCAA1
CMPAL,5BH
JNCAA2
AA3:
INCBL
INCSI
LOOPAA0
JMPNEXTE
AA2:
CMPAL,61H
JCAA1
CMPAL,7BH
JNCAA1
JMPAA3
NEXTE:
MOVDL,BL
MOVAH,02H
INT20H
MOVDL,BH
INT20H
MOVDL,DH
INT20H
HLT
13.有一个首地址为MEM的100D字数组,试编写程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。
解:
参考程序段如下:
movsi,offsetMEM
movcx,0064h
movbl,00h;记数组中间0项的个数
movbh,01h;后面存在不为0数的标记
aa:
movax,[si]
cmpax,0000h
jnznext1
cmpbh,01h
jzaa3
jmpaae
aa3:
incbl
pushcx
deccx
movdi,si
movbh,00h
aa1:
movax,[di+2]
mov[di],ax
adddi,0002h
cmpax,0000h
jzaa2
movbh,01h
aa2:
loopaa1
popcx
jmpaa
next1:
addsi,0002h
loopaa
movbh,00h
movcx,bx
shlbx,01
subsi,bx
movax,0000h
cc:
mov[si],ax
addsi,0002h
loopcc
aae:
hlt
14.在STRING到STRING+99单元中存放着一个字符串,试编制一个程序测试该字符串中是否存在数字,如有则把CL的第5位置1,否则将该位置0。
解:
参考程序如下:
MOVCX,100
MOVSI,OFFSETSTRING
AA:
MOVAL,[SI]
CMPAL,30H
JCNEXT
CMPAL,3AH
JNCNEXT
ORAH,20H
JMPNEXT1
NEXT:
ANDAH,0DFH
INCSI
LOOPAA
NEXT1:
MOVCL,AH
HLT
15.试编写一个程序把AX中的十六进制数转换为ASCII码,并将对应的ASCII码依次存放到MEM数组中的4个字节中。
例如:
当AX=2A49H时,程序执行完后,MEM中的4个字节的内容分别是39H、34H、41H、32H.
DATASEGMENT
MEMDB4DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
PUSHDS
XORAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVDH,04H
MOVBX,OFFSETMEM
MOVCL,04H
AA1:
MOVDX,AX
ANDDL,0FH
ADDDL,30H
CMPDL,3AH
JCNEXT
ADDDL,07H
NEXT:
MOV[BX],DL
INCBX
RORAX,CL
DECDH
JNZAA1
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
16.设在A、B和C单元中分别存放着三个数。
若三个数都不是0,则求出三个数之和存放在D单元中;若三个数中有一个为0,则把其他两个单元也清0。
试编写此程序。
DATASEGMENT
ADB?
BDB?
CDB?
DDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
PUSHDS
XORAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVAL,A
CMPAL,00H
JZNEXT
MOVAL,B
CMPAL,00H
JZNEXT
MOVAL,C
CMPAL,00H
JZNEXT
MOVAL,A
ADDAL,B
ADDAL,C
MOVD,AL
JMPNEXT1
NEXT:
MOVA,00H
MOVB,00H
MOVC,00H
NEXT1:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
17.下面程序段有错吗?
若有,请指出错误。
CRAYPROC
PUSHAX
ADDAX,BX
RET
ENDPCRAY
解:
程序段有错。
在调用子程序时,断点地址压入堆栈,而子程序内部修改了堆栈指针,子程序结束时有可能返回不到原断点处。
18.编写子程序嵌套结构的程序,把整数分别用二进制形式显示出来。
主程序:
把整数字变量VAL1存入堆栈,并调用子程序:
子程序:
从堆栈中取出VAL1;调用二进制显示程序显示出与其等效的二进制数;输出8个空格。
解:
子程序名BINDISP;子程序中的嵌套子程序名DISP,参考程序如下:
BINDISPPROCNEAR
ADDSP,0004H
POPAX
SUBSP,0006H
MOVCX,0010H
AA:
SHLAX,01
CALLDISP
LOOPAA
MOVCX,0008H
AA1:
MOVDL,00H;空格的ASCII码
MOVAH,02H
INT20H
LOOPAA1
RET
BINDISPENDS
DISPPROCNEAR
PUSHAX
JCNEXT
MOVDL,30H;0的ASCII码
MOVAH,02H
INT20H
JMPNEXT1
NEXT:
MOVDL,31H;1的ASCII码
MOVAH,02H
INT20H
POPAX
NEXT1:
RET
DISPENDP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理与接口技术 第四章 课后答案 微机 原理 接口 技术 第四 课后 答案