急!跪求大神爸爸!先输出最大的数并在下一行输出最小的数

wsmdbd 2018-06-28 02:16:07
跪求大神爸爸帮我在下面代码的基础上加进去!先输出最大的数并在下一行输出最小的数

DATAS SEGMENT
BUFFER DB 65,57,27,43,89
DATAS ENDS

STACKS SEGMENT
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV BX,4
AGAIN:
LEA SI,BUFFER
MOV CX,BX
AGAIN1:
MOV AH,[SI]
CMP [SI+1],AH
JNC L1
JMP L2
L1: MOV AL,[SI]
XCHG AL,[SI+1]
MOV [SI],AL
L2: INC SI
LOOP AGAIN1
MOV CX,BX
DEC BX
LOOP AGAIN
MOV CX,5
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,32
MOV AH,02H
INT 21H
INC SI
LOOP L3
MOV AH,4CH
INT 21H
CODES ENDS
END START
...全文
644 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我炒,爸爸都叫上了,简单写一个吧:


.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

zara 2018-06-28
  • 打赏
  • 举报
回复
看不懂,L3: 前面是排序部分,之后就是逐个输出数值部分。
排序,要先明白排序所用算法(冒泡),就不难理解了吧。
输出部分,就更简单了,就是数值转显示字符的过程。
    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
wsmdbd 2018-06-28
  • 打赏
  • 举报
回复
要求是先排序,然后先输出最大的数并在下一行输出最小的数 这代码不是我写的 我看不懂啊。。能帮我补完整吗大神
zara 2018-06-28
  • 打赏
  • 举报
回复
你这是都排好序了?只求最大、最小值,没必要排序的,排序要扫描多次,最大最小值一次扫描就可以了。
输出,就这个代码,只输出第一和最后一项不就可以了,哪有什么难度。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧