编程1:键盘输入2个数字字符,求其成绩,要求:完成编程与调试
(1)成绩保存变量中;
(2)成绩显示在显示屏上。
DATA SEGMENT
x1 DB 0
x2 DB 0
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:MOV AX,DATA
MOV DS,AX
MOV AH,1
INT 21H
MOV BL,AL
SUB BL,30H
MOV DL,2AH
MOV AH,2
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV AH,0
MUL BL
aam
ADD AH,30H
MOV x1,AH
ADD AL,30H
MOV x2,AL
MOV BX,AX
MOV AH,2
MOV DL,3DH
INT 21H
MOV AH,2
MOV DL,BH
INT 21H
MOV DL,BL
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
编程2
编程统计变量S(200个数)中正数、负数、0的个数,分别存放到变量Z、F、L中,并求出所有正数的平均值(整数)存放到P变量中。
DATA SEGMENT
S DB 50 DUP(-1,-6), 40 DUP(0), 20 DUP(1,2,3)
Z DB 0 ;正数的个数
F DB 0 ;负数的个数
L DB 0 ;0的个数
SUM DB 0 ;正数的总和
P DB 0 ;正数的平均值
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START: MOV DX,DATA
MOV DS,DX
MOV CX,200 ;计数器的值,控制循环次数
MOV SI,OFFSET S ;取偏移地址
COMPARE: CMP BYTE PTR[SI],0 ;和0比较大小
JG POSITIVE ;为正数,跳到POSITIVE执行
JS NEGTIVE ;为负数
JZ ZERO ;为0
POSITIVE: INC Z ;Z加1
MOV AL, [SI]
ADD SUM, AL
JMP NEXT
NEGTIVE: INC F
JMP NEXT
ZERO: INC L
JMP NEXT
NEXT: INC SI
LOOP COMPARE
MOV BL,SUM
MOV AX,1
MUL BL ;实现了将被除数放在AX中
MOV BL,Z
IDIV BL
MOV P,AL ;商在AL中
MOV AH,4CH
INT 21H
CODE ENDS
END START