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

上传人:宝路 文档编号:4170706 上传时间:2017-08-16 格式:DOC 页数:8 大小:32KB
返回 下载 相关 举报
微机原理上机作业汇编语言输入若干数字其中有大于十的从小到大排序_第1页
第1页 / 共8页
微机原理上机作业汇编语言输入若干数字其中有大于十的从小到大排序_第2页
第2页 / 共8页
微机原理上机作业汇编语言输入若干数字其中有大于十的从小到大排序_第3页
第3页 / 共8页
微机原理上机作业汇编语言输入若干数字其中有大于十的从小到大排序_第4页
第4页 / 共8页
微机原理上机作业汇编语言输入若干数字其中有大于十的从小到大排序_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《微机原理上机作业汇编语言输入若干数字其中有大于十的从小到大排序》由会员分享,可在线阅读,更多相关《微机原理上机作业汇编语言输入若干数字其中有大于十的从小到大排序(8页珍藏版)》请在金锄头文库上搜索。

1、汇编语言程序排序对输入的多个数字进行排序。要求:(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

2、1; add your data here!pkey db the programmer has been done . ,0dh,0ah,24hstring db please input data: ,0dh,0ah,24h string1 db 0dh,0dh,0dh,0dh,output: ,0dh,0ah,$kongge db 0dh, 0ah,24h ends stack segmentdw 128 dup(0)endscode segmentstart:; set segment registers: xor ax,ax push axmov ax, data mov ds, a

3、xmov es, axlea dx , stringmov ah, 09hint 21h ;显示请输入数据 mov di , offset keymov ax , 0 mov buffer,axbiaohao1: ;程序输入处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,2mov d

4、l,al ;显示此数int 21hsub al,30hmov ah,0 push ax ; 保存刚输入的数字mov bx,buffermov ax,10mul bx ;ax=10*bufferpop bx ; 将上面保存的 ax 的值给 bxadd ax,bx ;ax=10*buffer+bx(之前的 ax) 输入的数字大于 10mov buffer,ax ;将 ax 的值给 buf mov di,ax ;若输入 11,循环第一次输入是 1,第二次重输入 12jmp biaohao1; 输入大于 10 的数字的下一位biaohao2: ;输入数字不是 0 到 9 cmp al,20h ;输入是

5、否是空格je biaohao3 ;是的话跳出循环jmp biaohao1 ; 不是的话继续输入下一位biaohao3: ;是空格表示输入下一个数字 call konggexianshi ;屏幕上显示空格add di,2 ;修改 di 指针,输入下一个数字inc n ;输入的数字个数加一 mov ax,0mov buffer,ax ;初始化jmp biaohao1;继续输入下一个数字biaohao4:mov al,ncmp al,0jz qw ;没有输入数字就直接回车,结束程序call konggexianshicall paixu ;数字显示部分 push ush ax lea dx,stri

6、ng1mov ah ,09hint 21hpop axpop dx mov cx,0mov cl, nmov bx,offset keydisp:mov dx,0; chushihuamov ax,bxcall shujuxianshicall konggexianshiinc bxinc bxloop disp ;= paixu proc nearmov al,n mov n1,al; 外循环、loop1:mov cl,nmov ch,0;内循环dec cxmov bx,offset keyloop2:mov ax,bxcmp ax,bx+2jna loop3 ;ax 不大于 bx+2,不交

7、换push axmov ax,bx+2 mov bx,axpop axmov bx+2,axloop3:add bx,2loop loop2dec n1jz paixuendjmp loop1paixuend:retpaixu endp;= konggexianshi proc near push axpush dxmov ah,09mov dx ,offset kongge int 21hpop dx pop axretkonggexianshi endp ;= xianshidangeshuzi proc near push ush ax mov dx,0mov dl,alxor ax,a

8、xmov ah,02hint 21h pop axpop dxretxianshidangeshuzi endp;= shujuxianshi proc nearpush cxpush dsmov cx,10000div cx push dx ;保存余数 mov shuzi_w,al cmp shuzi_w,0je j1 add al,30h call xianshidangeshuzi j1:pop ax;取余数mov dx,0mov cx,1000div cxpush dx;保存余数 mov shuzi_w,al ;add shuzi_w,alcmp shuzi_w,0 ;cmp shuz

9、i_q,0je j2add al,30hcall xianshidangeshuzi j2:pop ax;取余数mov dx,0mov cx,100div cxpush dx;保存余数 mov shuzi_w,al ; add shuzi_w,alcmp shuzi_w,0 ;cmp shuzi_b,0je j3add al,30hcall xianshidangeshuzi j3: pop ax;取余数mov dx,0mov cx,10div cxpush dx;保存余数 mov shuzi_w,al ;add shuzi_w,alcmp shuzi_w,0 ;cmp shuzi_s,0je

10、 j4 add al,30hcall xianshidangeshuzi j4:pop dxadd dl,30h mov al,dl call xianshidangeshuzi xor ax,ax ;chushuhuamov shuzi_w,al; mov shuzi_q,al; mov shuzi_b,al; mov shuzi_g,alpop dspop cx ret shujuxianshi endpqw: call konggexianshi; add your code herelea dx, pkeymov ah, 9int 21h ; output string at ds:dx ; wait for any key. mov ah, 1int 21hmov ax, 4c00h ; exit to operating system.int 21h endsend start ; set entry point and stop the assembler.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号