求微机原理一段程序 输入7个数字 输出最大值 最小值 中值求微机原理一段程序 从键盘输入7个数字,输出最大值,最小值,中值用的是8086芯片就是 MOV DX,0FFFH 这样的
求微机原理一段程序 输入7个数字 输出最大值 最小值 中值求微机原理一段程序 从键盘输入7个数字,输出最大值,最小值,中值用的是8086芯片就是 MOV DX,0FFFH 这样的
求微机原理一段程序 输入7个数字 输出最大值 最小值 中值
求微机原理一段程序 从键盘输入7个数字,输出最大值,最小值,中值
用的是8086芯片
就是 MOV DX,0FFFH
这样的
求微机原理一段程序 输入7个数字 输出最大值 最小值 中值求微机原理一段程序 从键盘输入7个数字,输出最大值,最小值,中值用的是8086芯片就是 MOV DX,0FFFH 这样的
; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法:Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -----------------------------------------
; 功能:输出一个字符
; 入口:dl=要显示的字符
enter_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
enter_Chr endp
; -----------------------------------------
; 功能:从键盘输入N位数字
; 入口:N=数字位数;di=保存输入的数字首地址
Input_Digit Proc Near
push cx
push di
cld
mov cx,N
@@Input:mov ah,1
int 21h
cmp al,'0'
jb @@Input
cmp al,'9'
ja @@Input
stosb
loop @@Input
pop cx
pop di
ret
Input_Digit EndP
; -----------------------------------------
; 对数组元素无符号降序排序
Bubbling Proc Near
PUSH AX
PUSH CX
PUSH SI
PUSH DI
CLD
MOV CX,Elements ;外循环次数
@@Scanning:PUSH CX ;入栈保存外循环次数
LEA SI,Number ;数组首地址装入源变址寄存器
@@Compare:PUSH SI
POP DI ;当前数组元素地址赋给目的变址寄存器,以备交换之用
LODSB ;将当前数组元素读入AL
CMP AL,[SI] ;当前数组元素与相邻的下一个数组元素相比较
JAE @@NextOne ;若大于或等于,不作数据交换,处理下一个数组元素
XCHG AL,[SI] ;若小于,交换数组元素
STOSB ;保存数值较大者
@@NextOne:LOOP @@Compare ;处理下一个数组元素
POP CX ;外循环次数出栈
LOOP @@Scanning ;下一趟比较
POP DI
POP SI
POP CX
POP AX
RET
Bubbling EndP
; -----------------------------------------
N equ 7
PromptStr db 'Please Enter ',N or 30h,' digitals:$'
Max_Num db 13,10,13,10,'The maximum is $'
Mix_Num db 13,10,13,10,'The miximum is $'
Mid_Num db 13,10,13,10,'The midoule is $'
Number db N dup(?)
Elements EQU ($-Number)/Type Number-1 ; 外循环次数
Start:push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
Output PromptStr ;提示输入7个数字
lea di,Number ;数字存放地址
call Input_Digit ;从键盘接受指定位数的数字
call Bubbling ;无符号数降序排序
Output Max_Num ;最大值
mov dl,Number ;取最大值
call enter_Chr ;显示最大值
Output Mix_Num ;最小值
mov dl,Number[6] ;取最小值
call enter_Chr ;显示最小值
Output Mid_Num ;中值
mov dl,Number[3] ;取中值
call enter_Chr ;显示中值
Exit_Proc:mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束