- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BUF DW 16
NUM DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEGIN:MOV AX,DATA
MOV DS, AX
MOV AX, [BX]
MOV BX , OFFSET AQTAB
MOV NUM , AX
MOV AX, BUF
INC BUF2
DATA ENDS
JMP EXIT
CODE SEGMENT
JIAOHUAN:MOV BUF1,BL
ASSUME DS:DATA
MOV BUF2,AL
ASSUME CS:CODE
EXIT: MOV AH,4CH
START:MOV AX,DATA
INT 21H
MOV DS,AX
MOV SI,OFFSET BUF
MOV CX, CNT
MOV AX, 0
MOV SUM, AL
MOV AH, 4CH
INT 21H
CODE ENDS
END START
P102_58
DATA SEGMENT
X DW -123
Y DW 50
Z DW 1234H
DATA ENDS
CODE SEGMENT
CODE ENDS
MOV AL,BUF1
END START
MOV BL,BUF2
TEST BL,01H
JZ EXIT ;BUF2中为偶数
TEST AL,01H
JZ JIAOHUAN
;BUF1中偶数,BUF2为奇数
P102_57
DATA SEGMENT
BUF DB 30H,02H,10H,11H,56H,78H,65H,54H,85H,19H
JZ OS1 ;BUF1中为偶数
TEST BL,01H
JZ EXIT ;BUF1中奇数,BUF2为偶数
INC BUF1 ;均为奇数
INC BUF2
JMP EXIT
OS1: TEST BL,01H
JZ EXIT ;均为偶数
MOV BUF1,BL ;BUF1中偶数,BUF2为奇数
MOV BUF2,AL
SUB CX,AX
SBB BX,DX
MOV RESULT,CX
MOV RESULT+2,BX
MOV AH,4CH
INT 21H
CODE ENDS
END START
思考:用移位指令代替乘法 指令要注意什么问题
P102_5.6参考答案1
开始
N
Y
BUF1偶数?
Y
Y BUF2偶数?
BUF2偶数?
N
BUF1中数+1 BUF2中数+1
ASSUME DS:DATA,CS:CODE
START:MOV AX,DATA
MOV DS,AX
MOV AX,X
MOV BX,Y
MOV CX,Z
CMP AX,BX
JGE L1
CMP BX,CX
JL L2
MOV AX,BX
JMP EXIT
L2: MOV AX,CX
JMP EXIT
L1: CMP AX,CX
ASSUME CS:CODE, DS:DATA START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET STRING MOV DI,OFFSET NUM MOV BP,OFFSET BCHAR MOV CX,OFFSET LCHAR MOV DX,OFFSET OTHER LOP1: MOV AL,[SI]
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
P102_5.6参考答案2
开始
N
Y
BUF2偶数?
Y BUF1偶数? N
BUF1与BUF2交换
BUF1+1;BUF2+1
结束
DATA SEGMENT
BUF1 DB 30H
INC BUF1 ;均为奇数
BUF2 DB 23H
第五章课后习题参考答案 P86_4.16 若在数组字变量AQTAB平方表中有
十进制数0~20的平方值,从表中找出16的平 方值,结果送字变量NUM单元中。
1
参考答案
DATA SEGMENT
AQTAB DW 0,1,4,9,16,25,36,49,64,81,100,121,144
DW 169,196,225,256,289,324,361,400
N
BUF1与BUF2交换
结束
DATA SEGMENT
BUF1 DB 30H
BUF2 DB 23H
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:MOV AX,DATA
MOV DS,AX
MOV AL,BUF1
MOV BL,BUF2
TEST AL,01H
参考程序1: DATA SEGMENT
STRING DB '1$2AaDd[#' CNT EQU $-STRING-1 NUM DB CNT DUP (?) BCHAR DB CNT DUP(?) LCHAR DB CNT DUP(?) OTHER DB CNT DUP(?) DATA ENDS CODE SEGMENT
JL L2
EXIT:MOV AH,4CH
INT 21H
CODE ENDS
END START
P102_5.9从STRING开始存放一以#为结束标志的字符串,把 字符串中的字符分类,数字送入NUM开始的内存区,大写字母 送入BCHAR开始的内存区,小写字母送入LCHAR开始的内存区, 其它字符存到OTHER开始的内存区。
MOV AH,4CH
ADD AX,AX
INT 21H
ADD BX, AX
CODE ENDS
END BEGIN
P86_4.17 计算D=B*2-4AC,设A=2,B=9,C=8,结果存 放在RESUT中。(A、B、C均为有符号字节数据)
DATA SEGMENT
A DB 2
B DB 9
C DB 8
CNT EQU $-BUF
SUM DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:MOV AX,DATA
ADD1: ADD AL,[SI]
ADC AH,0
INC SI
LOOP ADD1
MOV CL,CNT
MOV DS,AX
DIV CL
RESULT DW ? ,?
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:MOV AX,DATA
MOV DS,AX
MOV AL,2
IMUL B
CWD
MOV BX,DX
MOV CX,AX
AL,A
IMUL C
MOV DX,4
IMUL DX