动态从键盘输入20个二位无符号数,找出其中最大数并显示。
程序员文章站
2022-06-07 08:48:37
...
动态从键盘输入20个二位无符号数,找出其中最大数并显示。
代码如下:
DATAS SEGMENT
;此处输入数据段代码
MAX DB 0
MIN DB 0
STR1 DB 'PLEASE INPUT 20 NUM',10,13,'$'
STR2 DB 10,13,'MAX=','$'
TEN DB 10
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV AH,9
MOV DX,OFFSET STR1
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MUL TEN
MOV MAX,AL
MOV AH,1
INT 21H
SUB AL,30H
ADD MAX,AL
MOV CX,19
MOV AL,0
INPUT:
MOV AH,2
MOV DL,20H
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MUL TEN
MOV MIN,AL
MOV AH,1
INT 21H
SUB AL,30H
ADD AL,MIN
CMP MAX,AL
JLE CHANGE
JMP EXIT
CHANGE:
MOV MAX,AL
JMP EXIT
EXIT:
LOOP INPUT
MOV AH,9
MOV DX,OFFSET STR2
INT 21H
MOV AH,0
MOV AL,MAX
DIV TEN
MOV BX,AX
ADD BX,3030H
MOV AH,2
MOV DL,BL
INT 21H
MOV AH,2
MOV DL,BH
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
该题百度里有另一种做法,但是我没有看懂,而且我也没有学CALL指令等,所以用自己的方法写了,运行结果如下:
写代码的时候注意:
1.进行乘除法运算时,不像加减运算
例如:
NUM DB 10
MOV TEN,10
加减法:ADD NUM,TEN
即数与数之间直接相加,并将结果保存在NUM中
乘除法:MUL TEN;AL*TEN=AL
即只需要将乘数TEN调出,与AL且只能与AL相乘,结果存在AL中
2.在进行除法运算时,要记得拓展被除数
例如:38/10=3…8
38被10所除,38是被除数,10是除数
NUM DB 38
TEN DB 10
MOV AH,0;拓展
MOV AL,MAX;赋值
DIV TEN;除10
MOV BX,AX
ADD BX,3030H
MOV AH,2
MOV DL,BL;商在低地址,3
INT 21H
MOV AH,2
MOV DL,BH;余数在高地址,8
INT 21H
下一篇: 那些曾虐我千百遍的计算机组成原理