【汇编语言程序设计】将内存DATA开始存放的10个8位带符号二进制数进行由小到大排序的程序

【汇编语言程序设计】将内存DATA开始存放的10个8位带符号二进制数进行由小到大排序的程序,第1张

dseg segment

 a1 dw 1212h,3434h,5656h,7878h,9090h,2121h,4343h,6565h,8787h,9999h

 c equ ($-a1)/2

dseg ends

assume cs:cseg, ds:dseg

cseg segment

start:

  mov ax, dseg

  mov ds, ax

  mov cx, c2

  dec cx

  dec cx

$0:

  mov bx, 0

$2:

  mov ax, a1[bx]

  cmp ax, a1[bx+2]

  jg $1

  xchg ax,a1[bx+2]

  mov  a1[bx], ax

$1:

  inc bx

  inc bx

  cmp bx, cx

  jl $2

  dec cx

  dec cx

  jg $0

  ;print result

  mov cx, c

  mov bx, 0

$3:

  mov ax, a1[bx]

  call print

  mov ax,0e20h

  int 10h

  inc bx

  inc bx

  loop $3

  mov ah,4ch

  int 21h

print proc near

  push cx

  push bx

  xor cx, cx

  mov bx, 10

  test ax, 8000h

  jz Q0

  push ax

  mov ah,0eh

  mov al,'-'

  int 10h

  pop ax

  neg ax

Q0:

  xor dx, dx

  div bx

  xor dx,0e30h

  push dx

  inc cx

  cmp ax, 0

  jnz Q0

Q1:

  pop ax

  int 10h

  loop Q1

  pop bx

  pop cx

  ret

print endp

cseg ends

end start

data segment

num dw 20 dup();存输入数列

i dw 0 ;数列个数

max dw

min dw

char1 db 'The maximum number is:$'

char2 db 0dh,'The minimum number is:$'

char3 db 0dh,'The order of the numbers is:',0ah,0dh,'$'

rec db 5 dup() ;输出缓存

data ends

code segment

main proc far

assume cs:code,ds:data

start:

push ds

mov ax,data

mov ds,ax

mov si,0

mov bx,0

input:

mov ah,01h

int 21h

cmp al,20h;遇到空格写数据

jz write1

cmp al,0dh;遇到回车写最后一个数据

jz write2

sub al,30h

mov cl,al

mov ch,00h

mov ax,bx

mov bx,0ah

mul bx

mov bx,ax

add bx,cx

jmp input

write1: ;write the numbers before Space

mov [num+si],bx

add si,2

inc i

mov bx,0

jmp input

write2: ;write the last one number before Enter

mov [num+si],bx

add si,2

inc i

mov dl,0ah

mov ah,02h

int 21h

beforemax:

mov bx,0

mov cx,i

dec cx

mov ax,[num+bx]

maximum:

add bx,2

cmp ax,[num+bx]

jnb nextmax

mov ax,[num+bx]

nextmax:

loop maximum

mov max,ax

beforemin:

mov bx,0

mov cx,i

dec cx

mov ax,[num+bx]

minimum:

add bx,2

cmp ax,[num+bx]

jbe nextmin

mov ax,[num+bx]

nextmin:

loop minimum

mov min,ax

beforeorder:

mov cx,i

dec cx

loop1:

mov di,cx

mov bx,0

loop2:

mov ax,num[bx]

cmp ax,num[bx+2]

jbe continue

xchg ax,num[bx+2]

mov num[bx],ax

continue:

add bx,2

loop loop2

mov cx,di

loop loop1

initmax: ;changemax初始化

lea dx,char1

mov ah,09h

int 21h

mov ax,max

mov bx,10

mov si,4

changemax: ;二进制->BCD

mov dx,0

div bx

mov [rec+si],dl

dec si

cmp ax,0

ja changemax

outputmax: ;输出(从initmax开始,做预备工作)

inc si

mov dl,[rec+si]

add dl,30h

mov ah,02h

int 21h

cmp si,4

jb outputmax

mov dl,0ah

mov ah,02h

int 21h

initmin: ;changemin初始化

lea dx,char2

mov ah,09h

int 21h

mov ax,min

mov bx,10

mov si,4

changemin: ;二进制->BCD

mov dx,0

div bx

mov [rec+si],dl

dec si

cmp ax,0

ja changemin

outputmin: ;输出(从initmin开始,做预备工作)

inc si

mov dl,[rec+si]

add dl,30h

mov ah,02h

int 21h

cmp si,4

jb outputmin

mov dl,0ah

mov ah,02h

int 21h

initnum: ;changenum初始化

lea dx,char3

mov ah,09h

int 21h

mov cx,i

mov di,0

loopnum:

mov ax,[num+di]

add di,2

mov bx,10

mov si,4

changenum: ;二进制->BCD

mov dx,0

div bx

mov [rec+si],dl

dec si

cmp ax,0

ja changenum

outputnum: ;输出(从initnum开始,做预备工作)

inc si

mov dl,[rec+si]

add dl,30h

mov ah,02h

int 21h

cmp si,4

jb outputnum

mov dl,20h

mov ah,02h

int 21h

loop loopnum

stop:

mov ah,4ch

int 21h

main endp

code ends

end start

请注意我的是无符号数的,你稍微改改应该就行了,最近做课程设计,比较忙,所以没空帮你改

另外,我的输入方式是一个数后空格再输入一个数,最后一个数按回车,你如果不习惯也可以改成输入一个数后回车,按其他字符结束

#include<stdioh>

#include<malloch>

int main()

{

int num;

printf("请输入元素的个数:");

scanf("%d",&num);

char p=(char)malloc(sizeof(char)num);

for(int i=0;i<num;i++)

{

printf("请输入第%d个元素",i);

fflush(stdin);

scanf("%c",p+i);

}

for(int i=0;i<num;i++)

{

printf("%c ",(p+i));

}

FILE fp;

if(!(fp=fopen("atxt","wb+")))

{

printf("打开文件失败");

return 1;

}

for(int i=0;i<num;i++)

{

fputc((p+i),fp);

}

return 0;

}

在ccs上已经调试了,还有不懂的话留邮箱!

以上就是关于【汇编语言程序设计】将内存DATA开始存放的10个8位带符号二进制数进行由小到大排序的程序全部的内容,包括:【汇编语言程序设计】将内存DATA开始存放的10个8位带符号二进制数进行由小到大排序的程序、IBM-PC汇编语言求排序程序、用C语言或汇编语言编写一个将数组按由小到大的顺序排序的程序,并在DSP的CCS平台上调试。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10068658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存