微机原理上机作业汇编语言输入若干数字其中有大于十的从小到大排序【VIP专享】

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言程序

排序

对输入的多个数字进行排序。

要求:

(a)所有数字从键盘输入;

(b)数字中至少包含一个大于10的数字;

(c)排好序的数字以十进制形式在屏幕显示输出。

data segment

shuzi_w db 0

;shuzi_q db 0

;shuzi_b db 0

;shuzi_s db 0

;shuzi_g db 0 ;将排序好的数字显示出来,需要每一位转换成ASCII码

key DW 100 dup(0) ;输入的数的存放位置

buffer dw 0 ;输入数字的暂存位置输入的数字大于10 需要缓冲

n db 1 ; 总共输入的数字个数注意从1开始loop循环原因n1 db 1

; add your data here!

pkey db 'the programmer has been done ..' ,0dh,0ah,24h

string db 'please input data: ',0dh,0ah,24h

string1 db 0dh,0dh,0dh,0dh,'output: ',0dh,0ah,'$'

kongge db 0dh, 0ah,24h

ends

stack segment

dw 128 dup(0)

ends

code segment

start:

; set segment registers:

xor ax,ax

push ax

mov ax, data

mov ds, ax

mov es, ax

lea dx , string

mov ah, 09h

int 21h ;显示请输入数据

mov di , offset key

mov ax , 0

mov buffer,ax

biaohao1: ;程序输入处

mov ah,08h ;键盘输入但不显示

int 21h ; 输入保存在AL中

cmp al,0dh; 输入是回车,直接结束输入

jz biaohao4

cmp al,'0' ;当输入的数在0到9中间时输入的是ASCII码jb biaohao2 ;不跳转否则跳转

cmp al,'9'

ja biaohao2

;若输入的数在0到9之间时

mov ah,2

mov dl,al ;显示此数

int 21h

sub al,30h

mov ah,0

push ax ; 保存刚输入的数字

mov bx,buffer

mov ax,10

mul bx ;ax=10*buffer

pop bx ; 将上面保存的ax 的值给bx

add ax,bx ;ax=10*buffer+bx(之前的ax) 输入的数字大于10

mov buffer,ax ;将ax 的值给buf

mov [di],ax ;若输入11,循环第一次输入是1,第二次重输入12

jmp biaohao1; 输入大于10 的数字的下一位

biaohao2: ;输入数字不是0到9

cmp al,20h ;输入是否是空格

je biaohao3 ;是的话跳出循环

jmp biaohao1 ; 不是的话继续输入下一位

biaohao3: ;是空格表示输入下一个数字

call konggexianshi ;屏幕上显示空格

add di,2 ;修改di指针,输入下一个数字

inc n ;输入的数字个数加一

mov ax,0

mov buffer,ax ;初始化

jmp biaohao1;继续输入下一个数字

biaohao4:

mov al,n

cmp al,0

jz qw ;没有输入数字就直接回车,结束程序call konggexianshi

call paixu

;数字显示部分

push dx

push ax

lea dx,string1

mov ah ,09h

int 21h

pop ax

pop dx

mov cx,0

mov cl, n

mov bx,offset key

disp:

mov dx,0; chushihua

mov ax,[bx]

call shujuxianshi

call konggexianshi

inc bx

inc bx

loop disp

;================================== paixu proc near

mov al,n

mov n1,al; 外循环、

loop1:

mov cl,n

mov ch,0;内循环

dec cx

mov bx,offset key

loop2:

mov ax,[bx]

cmp ax,[bx+2]

jna loop3 ;ax不大于bx+2,不交换

push ax

mov ax,[bx+2]

mov [bx],ax

pop ax

mov [bx+2],ax

loop3:

add bx,2

loop loop2

dec n1

jz paixuend

jmp loop1

paixuend:

ret

paixu endp

;=================================

konggexianshi proc near

push ax

push dx

mov ah,09

mov dx ,offset kongge

int 21h

pop dx

pop ax

ret

konggexianshi endp

相关文档
最新文档