从键盘接收十个人名,人名由4-8个字母构成。 按首字母上升次序显示所输入的人名,每一个人名占一行8086汇编语言编写
时间: 2024-03-11 18:43:30 浏览: 189
好的,这是一个在8086汇编语言中实现该功能的代码:
```
.model small
.stack 100h
.data
names db 10, 8, 0 ; 存储10个人名,每个名字最长为8个字母
temp db 8 dup(0) ; 用于交换两个人名的临时变量
i db 0 ; 循环计数器
j db 0 ; 循环计数器
.code
mov ax, @data
mov ds, ax
; 从键盘输入十个人名
mov si, offset names
mov cx, 10
input:
mov ah, 0ah
mov dx, si
int 21h
add si, 10
loop input
; 按首字母上升次序排序
mov i, 0
outer_loop:
mov j, i
inner_loop:
mov si, j
inc si
cmp si, 10
jge next_i
mov al, byte ptr [names+j]
cmp al, byte ptr [names+si]
jle next_j
; 交换两个人名
mov di, offset temp
mov cx, 8
rep movsb
mov di, offset names+j
mov cx, 8
rep movsb
mov si, offset temp
mov di, offset names+si
mov cx, 8
rep movsb
next_j:
inc j
cmp j, 10
jl inner_loop
next_i:
inc i
cmp i, 9
jl outer_loop
; 显示排序后的人名
mov si, offset names
mov cx, 10
output:
mov ah, 09h
mov dx, si
int 21h
add si, 10
loop output
mov ah, 4ch
int 21h
end
```
该程序使用了一个10x8的字符数组 `names` 来存储十个人名,每个名字最长为8个字母。首先从键盘输入十个人名,然后按照首字母上升次序排序,最后将排序后的人名显示出来。
阅读全文