汇编语言冒泡排序(从小到大)~~~~~~程序是对的,但排序出来的结果是9F,A4,B2,F8,12,4F,52,5A,69,78,愁啊

[复制链接]
查看11 | 回复2 | 2011-6-11 06:19:57 | 显示全部楼层 |阅读模式
DATA SEGMENT

BUFFER DB 12H,4FH,5AH,78H,69H,9FH,52H,0A4H,0F8H,0B2H

COUNT EQU $-OFFSET BUFFER
DATA ENDS
STACK SEGMENT STACK 'STACK'

SAP DB 100H DUP(?)

TOP EQU LENGTH SAP
STACK ENDS
CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,DATA

MOV DS,AX

MOV AX,STACK

MOV SS,AX

MOV SP,TOP

MOV CX,COUNT

DEC CX
TOP1: MOV DX,CX

MOV SI,OFFSET BUFFER
TOP2: MOV AL,[SI]

CMP AL,[SI+1]

JLE L1

XCHG AL,[SI+1]

MOV [SI],AL

L1: INC SI

LOOP TOP2

MOV SI,OFFSET BUFFER

MOV CX,DX

LOOP TOP1

MOV CX,COUNT

MOV SI,OFFSET BUFFER

L4: MOV AL,[SI]

MOV DH,AL

SHR AL,1

SHR AL,1

SHR AL,1

SHR AL,1

CMP AL,0AH

JL L2

ADD AL,07H

L2: ADD AL,30H

MOV DL,AL

MOV AH,2

INT 21H

AND DH,0FH

CMP DH,0AH

MOV DL,DH

JL L3

ADD DL,07H

L3: ADD DL,30H

MOV AH,2

INT 21H

MOV DL,0DH

MOV AH,2

INT 21H

MOV DL,0AH

MOV AH,2

INT 21H

INC SI

LOOP L4

MOV AH,4CH

INT 21H
CODE ENDS
END START

回复

使用道具 举报

千问 | 2011-6-11 06:19:57 | 显示全部楼层
1:要正确理解数据是怎么存储的。对于有符号数,正数保存的是其本身,负数保存的是其补码。如 +12 保存为 0CH , -12保存为 0F4H2:程序的结果是对的,因为 9F(-97),A4(-92),B2(-78),F8(-8),12(18),4F(79),52(82),5A(90),69(105),78(120),是按从小到大排列3:你的程序有点复杂,以下是我的代码:DATA SEGMENT
BUFFER DB 12H,4FH,5AH,78H,69H,9FH,52H,0A4H,0F8H...
回复

使用道具 举报

千问 | 2011-6-11 06:19:57 | 显示全部楼层
我是用free pascal;(从小到大)var a:array[1..1000]of longint;i,j,n,t:longint;begin//文件不打了//; readln(n);for i:=1 to n do readln(a);for i:=n-1 downto 1 do
...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行