首页 > 代码库 > 汇编-排序实验
汇编-排序实验
一、实习目的
掌握用汇编语言编写程序的思路和方法。
二、实习内容
从首地址为1000H开始存放10个数,要求设计程序将这些数由小到大排序,排序后的数仍放在原地址处。
三、代码
data segment count db 10; array db 12,34,56,21,234,54,45,58,96,14; msgOne db 'The source array number is:','$' msgTwo db 0ah,0dh,'The sorted array number is:','$' c10 db 10; data ends myStack segment stack db 100 dup(?) myStack ends code segment assume DS:data,CS:code start: mov ax,data; mov DS,ax; lea dx,msgOne; 输出排序前的数组 mov ah,09h; int 21h; mov ch,0; mov cl,count; mov bx,0; outPutSource: mov ah,0; mov al,array[bx]; call printNum; mov dl,' ' mov ah,02h; int 21h; inc bx; loop outPutSource lea si,array; 设置参数,调用排序函数 mov ch,0; mov cl,count; call mySort; lea dx,msgTwo; 输出排序后的数组 mov ah,09h; int 21h; mov ch,0; mov cl,count; mov bx,0; outPutSortedArray: mov ah,0; mov al,array[bx]; call printNum; mov dl,' ' mov ah,02h; int 21h; inc bx; loop outPutSortedArray mov ax,4c00h; int 21h; mySort proc; 数组排序,si中存放数组偏移地址,cx中存放数组元素个数 push ax; push cx; dec cx; mov ax,0; loopOne: push cx; push si; loopTwo: mov al,byte ptr[si]; cmp al,byte ptr[si + 1]; jbe next; xchg al,[si + 1]; xchg al,[si]; next: inc si; loop loopTwo pop si; pop cx; loop loopOne pop cx; pop ax; ret printNum proc; 将al中存放的数字以十进制形式输出 push ax; push dx; push cx; mov cx,0; tranToChar: mov ah,0; cmp al,0; jz outTranToChar; div c10; mov dl,ah; mov dh,0; push dx; inc cx; jmp tranToChar; outTranToChar: cmp cx,0; jz exit_printNum print: pop dx; add dx,30h; mov ah,02h; int 21h; loop print exit_printNum: pop cx; pop dx; pop ax; ret; code ends end start
四、运行结果
汇编-排序实验
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。