📄 1.asm
字号:
DATA SEGMENT
TABLE DB 1,2,3,4,5,6,7,8
XIAN1 DB "THE NUMBER OF FUSHU IS:","$"
XIAN2 DB " MIN=","$"
XIAN3 DB " MAX=","$"
XIAN4 DB "H","$"
DATA ENDS
STACK SEGMENT STACK
DB 100 DUP(?)
STACK ENDS;上为输出说明及数据定义部分
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
;1
DIVIDE PROC
MOV DL,AL;据传送
JMP L2
L1:INC BX;负数,把BX加1
JMP L3
L2:CMP DL,0;较正负
JL L1
L3:
RET
DIVIDE ENDP
;2
ZHUAN PROC
CMP AL,0;断正负
JL FU
JMP ZHENG
FU:XOR AL,7FH
INC AL;负数求原码
ZHENG:MOV DL,AL
MOV BL,AL
MOV CL,4
SHR DL,CL;移得倒高四位
ADD DL,30H
CMP DL,39H
JLE L1 ;高四位小于9则直接跳转倒输出
ADD DL,07H ;高四位大于9则加7
L1: MOV AH,2
INT 21H
MOV DL,BL
AND DL,0FH ;操作获得低四位
ADD DL,30H
CMP DL,39H
JLE L2
ADD DL,7
L2: MOV AH,2
INT 21H;高四位同样的处理
RET
ZHUAN ENDP
;3
MIN PROC
MOV CX,7
FINDMIN:LODSB
JMP BIJIAOMIN
PAIXUMIN:MOV DL,AL;L存储较小数
JMP BAOCHIMIN
BIJIAOMIN:CMP AL,DL
JLE PAIXUMIN;找到较小的数就跳转倒排序语句
BAOCHIMIN:;未找到比当前DL中小的数就保持
LOOP FINDMIN
MOV AL,DL
CALL ZHUAN
RET
MIN ENDP
;4
MAX PROC
MOV CX,7
FINDMAX:LODSB
JMP BIJIAOMAX
PAIXUMAX:MOV DL,AL
JMP BAOCHIMAX
BIJIAOMAX:CMP AL,DL
JGE PAIXUMAX
BAOCHIMAX:
LOOP FINDMAX
MOV AL,DL
CALL ZHUAN
RET
MAX ENDP;MIN子函数思路相同,只是寻找较大数而已。
START:
MOV BX,0
MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET TABLE
MOV DX,OFFSET XIAN1
MOV AH,9
INT 21H;出说明部分
MOV CX,8
NUM: LODSB
CALL DIVIDE
LOOP NUM;用子函数ZHUAN统计负数个数
ADD BL,30H
MOV DL,BL
MOV AH,2
INT 21H;出BL中的值,即负数个数
;MIN求最小值
MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET TABLE
MOV DX,OFFSET XIAN2
MOV AH,9
INT 21H;字说明部分
LODSB
;INC SI
MOV DL,AL
CALL MIN;用子函数MIN
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET XIAN4
MOV AH,9
INT 21H;指定文字格式输出
;MAX
MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET TABLE
MOV DX,OFFSET XIAN3
MOV AH,9
INT 21H;字说明部分
LODSB
;INC SI
MOV DL,AL
CALL MAX
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET XIAN4
MOV AH,9
INT 21H;指定文字格式输出
MOV AH,4CH
INT 21H;程序结束
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -