汇编语言 廖建明编 课后习题第五章习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.1 顺序分支循环
5.2 (AX)=5400H (BL)=06H (DX)=2106H
5.3 D
5.4 C
5.5 B
5.6 D
5.7 C
5.8 0FFH 0
5.9 C
5.10 略
5.11 B
5.12 A
5.13 23H 01H 56H 04H 00H
5.14 将BUF里的小写字母转换成大写字母
5.15 略
5.16 (1)完成85274AH与938765H的加法功能
(2)不能。INC对CF无影响,而ADD有影响
(3)MOV SI,OFFSET DA TA1
(4)置CF为零。若CF初始为1,则在第一次执行ADC指令时会产生不正确的结果。5.17(编程题为参考答案,下同)
DA TA SEGMENT
DA TA1 DB ?
DA TA2 DB ?
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA
BEGIN:MOV AX,DA TA
MOV DS,AX
MOV DX,DA TA1;高位送DX
MOV AX,DA TA2;低位送AX
SHL AX,1;
RCL DX,1;
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN
5.18
DA TA SEGMENT
DA TAS DB ‘PLEAST INPUT:’,0DH,0AH, ‘$’
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA
BEGIN: MOV AX,DA TA
MOV DS,AX
MOV AH,9H
INT 21H ;输出“PLEASE INPUT:”
MOV AH,1
INT 21H ;用户输入
MOV DL,AL
SUB DL,20H
MOV AH,2
INT 21H ;显示输出
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN
5.19
DA TA SEGMENT
ARRAY DB 20 DUP(?);原数列
PLUS DB 20 DUP(0);存放正数
NEGA DB 20 DUP(0);存放负数
PLUS_N DB 0;指示正数个数
NEGA_N DB 0;指示负数个数
TIME DB 20
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA
BEGIN: MOV AX,DA TA
MOV DS,AX
LEA SI,ARRAY
LEA BX,PLUS
LEA DI,NEGA
MOV CX,TIME
CLC;以上为初始化
LOOP1: MOV AL,[SI]
CMP AL,0
INC SI
JA DAYU
JB XIAO
LOOP LOOP1;等于零处理
JMP SHOW
DAYU: MOV [BX],AL;大于零的处理
INC BX
INC PLUS_N
LOOP LOOP1
JMP SHOW
XIAOYU:MOV [DI],AL;小于零的处理
INC DI
INC NEGA_N
LOOP LOOP1
SHOW: MOV DL,PLUS_N;屏幕显示输出
MOV AH,2
INT 21H
MOV DL,NEGA_N
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN
5.20
STACK SEGMENT PARA STACK
DB 10H DUP(0)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK
BEGIN: PUSHF;标志位入压入栈
POP AX;出栈到AX
EXCHANGE AH,AL;高低位互换
PUSH AX;AX压入栈
POPF;弹出到标志寄存器
CODE ENDS
END BEGIN
5.21
DA TA SEGMENT
STR DB ‘INPUT 1 OR 0’,0DH,0AH,‘$’BUFF DB 20 DUP(0)
LEN DW 10
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA
BEGIN: MOV AX,DA TA
MOV DS,AX
MOV DX,OFFSET STR
MOV AH,09H
INT 21H
MOV BH,48;零的ASCII码
MOV BL,65;A的ASCII码
LEA SI,BUFF
MOV CX,LEN