
求一道汇编上机题
本人初学汇编有一道题想向大家请教设计一程序,从键盘接收5个带符号十六进制字节数据,存于BUF开始的区域,将这些数据由大到小排列,并在屏幕上显示出来麻烦大家帮我写出具体语言...
本人初学汇编 有一道题想向大家请教
设计一程序,从键盘接收5个带符号十六进制字节数据,存于BUF开始的区域,将这些数据由大到小排列,并在屏幕上显示出来
麻烦大家帮我写出具体语言 谢谢大家了 展开
设计一程序,从键盘接收5个带符号十六进制字节数据,存于BUF开始的区域,将这些数据由大到小排列,并在屏幕上显示出来
麻烦大家帮我写出具体语言 谢谢大家了 展开
1个回答
2009-01-05
展开全部
求一道汇编上机题
悬赏分:20 - 解决时间:2007-11-3 20:26
本人初学汇编 有一道题想向大家请教
设计一程序,从键盘接收5个带符号十六进制字节数据,存于BUF开始的区域,将这些数据由大到小排列,并在屏幕上显示出来
麻烦大家帮我写出具体语言 谢谢大家了
提问者: pht398 - 秀才 二级
最佳答案
DSEG SEGMENT
n equ 5
BUF db 5 DUP(?)
DSEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:DSEG
MAIN PROC FAR ;主程序入口
mov ax, dseg
mov ds, ax
;从键盘接收5位十六进制数
mov dh,5
mov si,0
next1:
mov dl,2
mov bl,0
next2:
mov ah,1
int 21h
sub al,30h
cmp al,9
jbe next3
sub al,7
next3:
mov cl,4
rol bl,cl
add bl,al
dec dl
jnz next2
mov buf[si],bl
inc si
dec dh
jnz next1
;对BUF中的数排序
mov cx,n
dec cx
loop1: mov di,cx
mov bx,0
loop2: mov al,BUF[bx]
cmp al,BUF[bx+1]
jge continue
xchg al,BUF[bx+1]
mov BUF[bx],al
continue: add bx,1
loop loop2
mov cx,di
loop loop1
;将排序后的数在屏幕上显示出来
mov dh,5
mov si,0
next4:
mov ch,2
mov bl,buf[si]
next5:
mov cl,4
ror bl,cl
mov dl,bl
and dl,0fh
add dl,30h
cmp dl,39h
jbe next6
add dl,7
next6:
mov ah,2
int 21h
dec ch
jnz next5
inc si
dec dh
jnz next4
;按任意键退出
mov ah,1
int 21h
mov ax, 4c00h ;程序结束,返回到操作系统系统
int 21h
MAIN ENDP
CSEG ENDS
END MAIN
回答者: 鲲鹏展翅LHY - 经理 五级 10-27 23:16
我来评论>>
提问者对于答案的评价:
虽然你的答案并不是我想要的8086 16位机汇编 但还是感谢你 同时也谢谢第一位的回答 我会努力学习的
悬赏分:20 - 解决时间:2007-11-3 20:26
本人初学汇编 有一道题想向大家请教
设计一程序,从键盘接收5个带符号十六进制字节数据,存于BUF开始的区域,将这些数据由大到小排列,并在屏幕上显示出来
麻烦大家帮我写出具体语言 谢谢大家了
提问者: pht398 - 秀才 二级
最佳答案
DSEG SEGMENT
n equ 5
BUF db 5 DUP(?)
DSEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:DSEG
MAIN PROC FAR ;主程序入口
mov ax, dseg
mov ds, ax
;从键盘接收5位十六进制数
mov dh,5
mov si,0
next1:
mov dl,2
mov bl,0
next2:
mov ah,1
int 21h
sub al,30h
cmp al,9
jbe next3
sub al,7
next3:
mov cl,4
rol bl,cl
add bl,al
dec dl
jnz next2
mov buf[si],bl
inc si
dec dh
jnz next1
;对BUF中的数排序
mov cx,n
dec cx
loop1: mov di,cx
mov bx,0
loop2: mov al,BUF[bx]
cmp al,BUF[bx+1]
jge continue
xchg al,BUF[bx+1]
mov BUF[bx],al
continue: add bx,1
loop loop2
mov cx,di
loop loop1
;将排序后的数在屏幕上显示出来
mov dh,5
mov si,0
next4:
mov ch,2
mov bl,buf[si]
next5:
mov cl,4
ror bl,cl
mov dl,bl
and dl,0fh
add dl,30h
cmp dl,39h
jbe next6
add dl,7
next6:
mov ah,2
int 21h
dec ch
jnz next5
inc si
dec dh
jnz next4
;按任意键退出
mov ah,1
int 21h
mov ax, 4c00h ;程序结束,返回到操作系统系统
int 21h
MAIN ENDP
CSEG ENDS
END MAIN
回答者: 鲲鹏展翅LHY - 经理 五级 10-27 23:16
我来评论>>
提问者对于答案的评价:
虽然你的答案并不是我想要的8086 16位机汇编 但还是感谢你 同时也谢谢第一位的回答 我会努力学习的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询