欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

动态从键盘输入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指令等,所以用自己的方法写了,运行结果如下:
动态从键盘输入20个二位无符号数,找出其中最大数并显示。
写代码的时候注意:
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
相关标签: 汇编 反汇编