汇编实现16位有符号二进制数排序并输出
2009-05-17 17:04
567 查看
data segment
BUF DW 2560,-3,4387,12,6250,-79,54,88
COUNT EQU $-BUF
OUTBUF DB 7 DUP(0),'$'
data ends
code segment
assume cs:code,ds:data
OUTPUT PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV BX,OFFSET OUTBUF+5
MOV BYTE PTR [BX],' '
MOV AX,[DI]
CMP AX,0
JGE LGE
MOV DL,'-'
PUSH AX
MOV AH,2
INT 21H
POP AX
XOR CX,CX
SUB CX,AX
MOV AX,CX
LGE:
MOV CX,10 ;做32位除以16位的除法,故将10送CX
AGAIN:
MOV DX,0 ;无符号数扩展将16位扩展为32位
DIV CX
ADD DL,30H ;将DL中的一位十进制数转换为ASCII码
DEC BX ;调整指针
MOV [BX],DL
OR AX,AX ;根据商是否为0,设置ZF
JNZ AGAIN ;判商是否为0,不为0继续除以10
MOV DX,BX ;将输出数据区的偏移首地址送DX
MOV AH,9
INT 21H
POP DX
POP CX
POP BX
POP AX
RET
OUTPUT ENDP
start proc far
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
MOV DI,OFFSET BUF
MOV DX,(COUNT/2)-1 ;设置外循环计数器
OUTSID:
MOV CX,DX ;设置内循环计数器
MOV SI,DI
INSIDE:
INC SI
INC SI
MOV AX,[DI]
MOV BX,[SI]
CMP AX,BX
JLE NEXCHG
MOV [DI],BX
MOV [SI],AX
NEXCHG:
LOOP INSIDE
CALL OUTPUT
INC DI
INC DI
DEC DX
JNZ OUTSID
ret
start endp
code ends
end start
BUF DW 2560,-3,4387,12,6250,-79,54,88
COUNT EQU $-BUF
OUTBUF DB 7 DUP(0),'$'
data ends
code segment
assume cs:code,ds:data
OUTPUT PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV BX,OFFSET OUTBUF+5
MOV BYTE PTR [BX],' '
MOV AX,[DI]
CMP AX,0
JGE LGE
MOV DL,'-'
PUSH AX
MOV AH,2
INT 21H
POP AX
XOR CX,CX
SUB CX,AX
MOV AX,CX
LGE:
MOV CX,10 ;做32位除以16位的除法,故将10送CX
AGAIN:
MOV DX,0 ;无符号数扩展将16位扩展为32位
DIV CX
ADD DL,30H ;将DL中的一位十进制数转换为ASCII码
DEC BX ;调整指针
MOV [BX],DL
OR AX,AX ;根据商是否为0,设置ZF
JNZ AGAIN ;判商是否为0,不为0继续除以10
MOV DX,BX ;将输出数据区的偏移首地址送DX
MOV AH,9
INT 21H
POP DX
POP CX
POP BX
POP AX
RET
OUTPUT ENDP
start proc far
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
MOV DI,OFFSET BUF
MOV DX,(COUNT/2)-1 ;设置外循环计数器
OUTSID:
MOV CX,DX ;设置内循环计数器
MOV SI,DI
INSIDE:
INC SI
INC SI
MOV AX,[DI]
MOV BX,[SI]
CMP AX,BX
JLE NEXCHG
MOV [DI],BX
MOV [SI],AX
NEXCHG:
LOOP INSIDE
CALL OUTPUT
INC DI
INC DI
DEC DX
JNZ OUTSID
ret
start endp
code ends
end start
相关文章推荐
- 汇编实现16位有符号数的输入~~~~~~
- 汇编实现16位有符号数的输入~~~~~~
- 倒序输出一个无符号二进制数的所有位
- 编写一个多线程函数实现对数组排序,要求: 1.至少用两个线程 2.数组的元素值可以事先定义好,或者可以从键盘输入(增加一个线程)。 3.用一个线程对数组排序,用另一个线程输出排序结果。 4.保证先排好序,再输出。
- java编程实现对10个整型数据元素输出最小的两个数,java自带的Arrays.sort排序方法,小--->大
- 汇编实现排序——希尔排序
- java8实现spark wordcount并且按照value排序输出
- dedecms按栏目名首字母/数字排序输出的实现方法
- 从“假如有以下几种价格10,20,50,请你代码实现将他们排序输出”看设计模式中的策略模式
- 编译原理:用bison实现输入二进制数,输出十进制数
- 利用采样器实现mapreduce任务输出全排序
- 汇编语言编写数组的问题和实现输入两个十进制数输出的问题
- 编写一个void sort(int*x,int n)实现将x数组中的n个数据从大到小排序。n及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件
- 汇编语言二 在缓冲区VAR中连续存放着3个16位的无符号数,编写程序实现将其按递增关系排列。
- python处理计算机辅助设计软件文字信息并实现排序输出
- 汇编语言: 试编写一段程序,从键盘接收一个 0-65535 间的十进制无符号数,并在终端上显示与 它等值的二进制数。
- java实现把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如{3,4,5,1,2}为{1,2,3,4,5}
- 汇编 输入3个数字排序 冒泡算法实现
- 汇编语言中常用进制数据输出的程序实现
- 多种方式实现字符串/无符号数反向输出_栈_递归_头尾指针