21,458
社区成员
发帖
与我相关
我的任务
分享
.model tiny
.386
.code
org 0100h
start:
push cs
pop ds
lea si, buffer
mov cx, max - buffer
mov dx, word ptr max
cld
__loop1:
lodsb
cmp al, dl
jl __next1
mov dl, al
__next1:
cmp al, dh
jg __next2
mov dh, al
__next2:
loop __loop1
mov word ptr max, dx
lea si, max
call __print
mov ah, 4ch
int 21h
__print:
mov cx, 2
__loop2:
movsx ax, byte ptr [si]
inc si
test ah, ah
jz short __next3
push ax
mov dl, '-' - '0'
call __printchar
pop ax
neg ax
__next3:
db 0d4h, 64h ; aam 100
mov bh, ah
aam
mov bl, ah
push ax
test bh, bh
jz short __nextchar
mov dl, bh
call __printchar
__nextchar:
or bh, bl
jz short __lastchar
mov dl, bl
call __printchar
__lastchar:
pop dx
call __printchar
mov dl, 10 - '0'
call __printchar
loop __loop2
ret
__printchar:
mov ah, 02h
add dl, '0'
int 21h
ret
; --- data definitions
buffer db 65, 57, 27, 43, 89
max db -128
min db 127
end start
LOOP AGAIN
MOV CX,2 ; 只输出最大最小数,所以是 2
LEA SI,BUFFER
L3: MOV AL,[SI]
MOV AH,0
MOV BL,10
DIV BL
MOV DL,AL
ADD DL,30H
PUSH AX
MOV AH,02H
INT 21H
POP AX
MOV DL,AH
ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,0dh ; 以回车换行字符替换原来的空格
MOV AH,02H
INT 21H
MOV DL,0ah
MOV AH,02H
INT 21H
add SI, 4 ; si 指向最后的最小值
LOOP L3
MOV AH,4CH