用emu8086编写程序代码:输入一个字符串(以回车符作为结束),对其进行选择排序,然后输出。
时间: 2023-06-06 10:06:41 浏览: 222
好的,这是一个编程问题,我可以帮你解答。以下是用emu8086编写的程序代码,可以对输入的字符串进行选择排序并输出:
```
org 100h ; 程序入口地址
jmp start ; 跳过数据部分
msg db 0ah, '请输入字符串: $' ; 提示输入字符串的消息
str db 256 ; 用于存储输入的字符串
db 0
start:
mov ah, 9 ; 显示提示消息
lea dx, msg
int 21h
mov ah, 0ah ; 读取字符串
lea dx, str
int 21h
mov si, offset str ; 将si指向字符串的首字符
mov cx, 0 ; cx寄存器用于记录已排序的字符数
next_char:
cmp byte ptr [si], 0 ; 判断是否已经到达字符串末尾
je done
mov di, si ; 将di指向当前字符
inc di
next_cmp:
cmp byte ptr [di], 0 ; 判断是否已经到达字符串末尾
je next_char
mov al, [si] ; 将当前字符存储到al寄存器
cmp al, [di] ; 比较当前字符和下一个字符
jle next_cmp ; 如果当前字符比下一个字符小,跳过比较
xchg al, [di] ; 交换当前字符和下一个字符
mov [si], al ; 将当前字符存储到下一个字符的位置
inc cx ; 已排序的字符数+1
jmp next_char ; 继续处理下一个字符
done:
lea si, str+2 ; 将si指向字符串的第一个字符
mov ah, 9 ; 显示排序后的字符串
msg2 db 0ah, '排序后的字符串为: $'
lea dx, msg2
int 21h
print_char:
cmp byte ptr [si], 0 ; 判断是否已经到达字符串末尾
je end_prog
mov dl, [si] ; 将字符存储到dl寄存器
mov ah, 2 ; 显示当前字符
int 21h
inc si ; 继续处理下一个字符
jmp print_char
end_prog:
mov ah, 4ch ; 退出程序
int 21h
```
注意:在运行程序之前,需要先安装dosbox并打开emu8086的虚拟机。另外,如果你想输入中文字符串,需要将输入法切换为英文状态。
阅读全文