第5章习题解答.docx
- 文档编号:5636560
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:14
- 大小:43.46KB
第5章习题解答.docx
《第5章习题解答.docx》由会员分享,可在线阅读,更多相关《第5章习题解答.docx(14页珍藏版)》请在冰豆网上搜索。
第5章习题解答
第5章汇编语言程序设计习题参考答案
1.
2.
⑴BUFFDB240DUP⑺
(2)xxDBBYTE”,”WORD
假设该数据区的起始逻辑地址为2000H:
0000H,则内存分配如下:
12
2000H:
0000H
-12
0001H
00H
0002H
FFH
0003H
00H
0004H
FFH
0005H
00H
0006H
FFH
0007H
0
2000H:
0008H
1
0009H
2
000AH
1
000BH
2
000CH
0
000DH
3
000EH
0
000FH
1
0010H
2
0011H
1
0012H
2
0013H
0
0014H
3
0015H
H?
2000H:
0016H
E?
0017H
丄?
0018H
丄?
0019H
O?
001AH
?
J■■
001BH
C?
001CH
O?
001DH
M?
001EH
08H
2000H:
001FH
00H
0020H
1FH
2000H:
0021H
00H
0022H
00H
0023H
20H
0024H
VAR1
VAR2
VAR3
VAR4
VAR5
3.
(1)段的类型:
段的类型有4种,分别是代码段、数据段、堆栈段和附加段。
(2)段的定义:
定义段使用伪指令SEGMENT/ENDS来定义的。
即:
段名SEGMENT[定位类型][组合类型][,类别?
]
段名ENDS
(3)选项的作用和含义:
定位类型:
告诉汇编程序如何确定逻辑段的边界在存储器的位置,共有4种。
1BYTE:
表示逻辑段从字节的边界开始,即本段的起始地址紧接前一段。
2WORD:
表示逻辑段从字的边界开始,即本段的起始地址必须是偶数。
3PARA:
表示逻辑段从节的边界开始,即本段的起始地址后4位为0。
4PAGE:
表示逻辑段从节的边界开始,即本段的起始地址后8位为0。
组合类型:
告诉汇编程序当装入存储器时各个逻辑段如何进行组合,共有6种。
1不组合:
如果缺省,则不组合。
2PUBLIC:
对于不同逻辑段只要有相同段名就把他们集中成一段装入内存。
3STACK同PUBLIC相同,但仅限于堆栈段。
4COMMON对于不同逻辑段若有相同的段名,则都从同一地址装入。
5MENORY表示在几个逻辑段连接时,本段定位在地址最高的地方。
6AT表达式:
表示以表达式的值来定位段地址。
‘类别':
在连接时决定各逻辑段的装入顺序。
4.假设程序中有4个不同类型的段,则名为initprogram宏指令的宏定义如下:
initprogramMACROcsname,dsname,esname,ssname
START:
ASSUMECS:
csname,DS:
dsname,ES:
esname,SS:
ssname
MOVAX,dsname
MOV
DS,
AX
MOV
AX,
esname
MOV
ES,
AX
MOV
AX,
ssname
MOV
SS,
AX
ENDM
5.假设需传送的数据块为字节数据块,则名为Datastranaction宏指令的宏定义如下:
DatastranactionMACRObuffer1,buffer2,length
LEASI,buffer1
LEADI,buffer2
MOVCX,length
CLD
REPMOVSB
ENDM
6.有效地指令为:
(2)、(5)、(9)
无效的指令为:
(1)数据类型不一致
(3)两个操作数不能同时为存储器操作数
(4)CS不能作为目的操作数
(6)不能用两个变址寄存器作有效地址分量
(7)一个操作数不能是两个变量名的表达式
(8)基址和变址只能相加不能相减
(10)目的操作数不能是立即数
(11)在有效地址中不能减基址或变址
严格地说:
(9)也不对,因为没有指出存储器的数据类型,即操作数类型不明确。
7.
9.
(1)操作符的作用:
OFFSET:
取得ARRAY的偏移地址
LENGTH:
取得ARRAY的数组元素的个数(即变量的个数)
TYPE:
取得ARRAY的类型值
(2)有关寄存器所产生的变化:
BX:
有效地址寄存器,存放变量ARRAY的偏移地址
CX:
计数寄存器,存放数组的长度,其值为100
SI:
存放ARRAY的类型值为2。
是作为ARRAY偏移地址的位移量(变化步长)。
10.
(1)用比较、转移指令实现:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAH,01H
INT21H
ANDAL,11011111B
CMPAL,41H
JEP0
CMPAL,42H
JEP1
CMPAL,43H
JEP2
CMPAL,44H
JEP3
CMPAL,45H
JEP4
CMPAL,46H
JEP5
CMPAL,47H
JEP6
CMPAL,48H
JEP7
CMPAL,49H
JEP8
CMPAL,4AH
JEP9
CMPAL,4BH
JEP10
MOVAH,4CH
INT21H
P0:
CODEENDS
ENDSTART
(2)用跳转表实现:
DATASEGMENT
TABLEDWP0,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10
DATAENDS
CODESEGMENT
ASSUMECS:
CODE;DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAH,01H
INT21H
SUBAL,41H
JSSTOP
CMPAL,10
JGSTOP
XORAH,AH
LEABX,TABLE
ADDBX,AX
JMP[BX]
STOP:
MOVAH,4CH
INT21H
P0:
CODEENDS
ENDSTART
11.
MOV
CX,100
XOR
AH,AH
XOR
BX,BX
LEA
SI,BUF
LOPT:
MOV
AL,[SI]
CMP
AL,85H
JG
GRAET85
CMP
AL60H
JLLESS60
INC
PASS
JMP
NEXT
GRAET85:
INC
GOOD
JMP
ENXT
LESS60:
INC
BAD
NEXT:
ADD
BX,AX
INC
SI
LOOPLOPT
MOV
AX,BX
MOV
DL,100
DIV
DL
AAM
MOV
CL,4
SHL
AH,CL
OR
AL,AH
MOV
AVRG,AL
MOV
AL,GOOD
AAM
MOV
CL,4
SHL
AH,CL
OR
AL,AH
MOV
PASS,AL
AAM
MOV
CL,4
SHL
AH,CL
OR
AL,AH
MOV
BAD,AL
;统计60〜85分之间的学生人数
;统计大于85分的学生人数
;统计小于60分的学生人数
;计算总分
;求平均分
AAM
MOVCL,4
SHLAH,CLORAL,AH
MOVBAD,AL
12.DATASEGMENT
ARRAYDW10DUP(?
);应写出10个16位的无符号数MAXDW?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE;DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,ARRAY
MOVAX,[SI]
MOVCX,9
LOOP1:
INCSI
INCSI
CMPAX,[SI]
JAENEXT
MOVAX,[SI]
LOOPNEXT
MOVMAX,AX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
13.DATASEGMENT
ARRAYDW10DUP(?
);应写出10个16位的有符号数MAXDW?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE;DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,ARRAY
MOVAX,[SI]
MOVCX,9
LOOP1:
INCSI
INCSI
CMPAX,[SI]
JGENEXT
MOVAX,[SI]LOOPNEXTMOVMAX,AXMOVAH,4CHINT21H
CODEENDS
ENDSTART
14.DATASEGMENT
xDB0,8DUP(?
)yDB0,8DUP(?
)sumDB0,8DUP(?
)DATAENDSCODESEGMENT
ASSUMECS:
CODE;DS:
DATA
START:
MOVAX,DATAMOVDS,AXLEASI,x+9LEADI,y+9LEABX,sum+9MOVCX,8XORAH,AH
NEXT:
MOVAL,[SI]MOVDL,[DI]ADCAL,DLDAAMOV[BX],ALDECSIDECDIDECBXLOOPNEXTMOVAH,4CHINT21H
CODEENDS
ENDSTART
15.DATASEGMENT
xDB0,16DUP(?
)yDB0,16DUP(?
)sumDB0,16DUP(?
)DATAENDSCODESEGMENT
ASSUMECS:
CODE;DS:
DATA
START:
MOVAX,DATA
MOVDS,AXLEASI,x+17LEADI,y+17
LEABX,sum+17
MOVCX,16
XORAH,AH
NEXT:
MOVAL,[SI]
MOVDL,[DI]
ADCAL,DL
AAA
MOV[BX],ALDECSI
DECDIDECBX
;处理进位
LOOPNEXT
MOV[BX],AH
MOVAH,4CHINT21H
16.
CODE
END
ENDS
START
MOV
BL,16
XOR
CL,CL
MOV
AX,NUMBER
LOPER
:
ROL
AX,1
JNC
NEXT
INC
CL
NEXT:
DEC
BL
;NUMBER为字变量
JNZLOPER
17.
HLT
;NUMBER为字变量
MOVCL,0
MOVAX,NUMBER
CMPAX,0
JGPLUS
JEZERO
MOV
JMP
CL,0FFH
STOP
PLUS:
MOV
CL,1
JMP
STOP
ZERO:
MOV
CL,0
STOP:
HLT
18.DATASEGMENT
TABLEDB49,38,38,12,12,12,55,38,38,49
NumberDB1
DATAENDS
STACSEGMENTPARASTACK,STACK
DW10DUP(?
)
STACENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOV
AX,DATA
MOV
DS,AX
MOV
ES,AX
MOV
DX,9
MOV
CX,0
LEA
BX,TABLE
LOOP0:
MOV
AL,[BX]
AND
AL,AL
JS
JUMP
PUSH
CX
MOV
DI,BX
INC
DI
MOV
CX,DX
LOOP1:
CMP
AL,[DI]
JNE
NEXT
INC
NUMBER
MOV
BYTEPTR[DI],0FFH
NEXT:
INC
DI
LOOP
LOOP1
POP
CX
CMP
CL,NUMBER
JGE
JUMP
MOV
CH,AL
MOV
CL,NUMBER
MOV
NUMBER,1
JUMP:
INC
BX
DEC
DX
JNZ
LOOP0
MOV
AH,4CH
INT
21H
CODEENDS
ENDSTART
LEADI,STRING
MOVAL,20H
;20H为空格的ASCII码
20.
21.
MOVCX,80
CLD
REPNESCASB
JZMATCH
MOVCL,0FFH
JMPSTOP
MATCH:
DECDI
MOVCX,DI
STOP:
HLT
LEA
DI,STRING
MOV
AL,20H
MOV
CX,80
CLD
REPE
SCASB
DEC
CX
HLT
;20H为空格的ASCII码
;减去回车符
MOV
BL,16
XOR
CX,CX
MOV
AX,NUMBER
LOPER:
ROL
AX,1
JNC
ZERO
INC
CL
JMP
NEXT
ZERO:
INC
CH
NEXT:
DEC
BL
JNZ
LOPER
HLT
;NUMBER为字变量
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 解答