汇编语言求无符号字节序列中的最大值和最小值
题目要求:
设有10个无符号数的字节序列。
用汇编语言编写程序,找出其中的最大、最小值,并在屏幕上显示。
数据可在数据段内定义,也可从键盘接收任意字符。
;----------------------------------------------
;做而论道编写的程序如下:
;从键盘接收任意字符。
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
MSG1 DB 'Please input some chars: $'
MSG2 DB 13, 10, 'The biggest char is: <'
BIG DB ' ', '>'
DB 13, 10, 'The smallest char is: <'
MIN DB 127, '>$'
NNN DB 0
DATA ENDS
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
;-------------------------
MOV DX, OFFSET MSG1
MOV AH, 9
INT 21H
M_LOOP:
MOV AH, 1
INT 21H
CMP AL, 13
JE DISP
INC NNN
CMP AL, DS:[BIG]
JB NEXT
MOV DS:[BIG], AL
NEXT:
CMP AL, DS:[MIN]
JNB M_LOOP
MOV DS:[MIN], AL
JMP M_LOOP
DISP:
CMP NNN, 0 ;输入 0 个吗 ?
JE EXIT ;是则退出,不予显示
MOV DX, OFFSET MSG2
MOV AH, 9
INT 21H
;-------------------------
EXIT:
MOV AH, 4CH
INT 21H
CODE ENDS
END START
;----------------------------------------------
本程序执行后,显示如下:
Please input some chars: 1357924680
The biggest char is: <9>
The smallest char is: <0>
本程序,没有使用寄存器来存放最大、最小值,而是使用了存储器变量 BIG、MIN。
效果是相同的。
因为,BH 等8位的寄存器,仅仅有八个,经常不够用。
存储器变量,则可以定义 65535 个。
这样,程序就更有通用性。
;----------------------------------------------
提问者写的评论:
jjk921121 2013-4-23 09:39
同样也谢谢你!你写的程序很好,但是书本要求用BH和BL暂存最大值和最小值,辛苦了。
jjk921121 2013-4-23 09:39
回答的好专业,厉害!
;----------------------------------------------
题目网址:http://zhidao.baidu.com/question/543653490