汇编排序

来源:百度知道 编辑:UC知道 时间:2024/06/24 16:12:31
3、有一个字节型数组,排序:1)作为无符号数排序,2)作为带符号排序,存放排序结果。
①已知数据段的定义:
data segment
org 2000h
num db 12h,95h,0f1h,oc2h,82h,2h,10h,34h
count db $-num
org 3000h
res1 db count dup(?) ;store unsigned
org 4000h
res2 db count dup(?) ;store signed
data ends
我想问问各位高手,有符号排序与无符号排序的指令有什么区别?谢谢各位指点!

就拿数组中的前两个元素来说,12h,无论作为无符号数还是有符号数,其值都是十进制的18;而95h则不然,作为无符号数,它是十进制的149,若作为有符号数,则是-107。若要比较这两个数的大小,无符号数比较与有符号数比较,结果截然相反。 

无符号数比较:12h<95h,18<149 

有符号数比较:12h>95h,18>-107 

比较指令是一样的,都是用cmp指令,关键是条件转移指令,两者相近,但又不同。假设,目的操作数>源操作数,则转, 

mov al,12h 

cmp al,95h 

无符号数比较,条件转移指令:ja al>95h,称作:高于转 

有符号数比较,条件转移指令:jg al>95h,称作:大于转 

小结: 

无符号数比较: 

目的操作数>源操作数,条件转移指令用ja,称作:高于转 

目的操作数<源操作数,条件转移指令用jb,称作:低于转 

有符号数比较: 

目的操作数>源操作数,条件转移指令用jg,称作:大于转 

目的操作数<源操作数,条件转移指令用jl,称作:小于转

; 冒泡法排序

; -----------------------------------------

; 定义常量

Yes    EQU   1

No     EQU   0

On     EQU   1

Off    EQU   0