在8086中实现从键盘输入十个字符串人名,人名由四个字母组成,按照字母上升次序显示输入人名,每一个人名占一行
时间: 2024-03-25 15:42:07 浏览: 44
以下是一种8086汇编语言的实现方式:
```assembly
DATA SEGMENT
BUFFER DB 10*4 DUP('$') ; 存储输入的人名
DATA ENDS
CODE SEGMENT
START:
MOV AX, @DATA ; 初始化数据段寄存器
MOV DS, AX
; 从键盘上输入10个人名
MOV CX, 10
MOV SI, 0
INPUT_LOOP:
CALL INPUT_NAME
MOV DI, SI
ADD DI, DI
CALL SORT_NAME
ADD SI, 4
LOOP INPUT_LOOP
; 显示排序结果
MOV CX, 10
MOV SI, 0
OUTPUT_LOOP:
MOV DX, OFFSET BUFFER
ADD DX, SI
MOV AH, 09H
INT 21H
MOV AH, 02H
MOV DL, 0DH
INT 21H
MOV DL, 0AH
INT 21H
ADD SI, 4
LOOP OUTPUT_LOOP
MOV AH, 4CH ; 退出程序
INT 21H
CODE ENDS
; 输入一个四字母的人名,存储在BUFFER中
INPUT_NAME PROC
MOV DX, OFFSET BUFFER
ADD DX, SI
MOV AH, 0AH
INT 21H
RET
INPUT_NAME ENDP
; 对一个四字母的人名进行排序,结果存储在BUFFER中
SORT_NAME PROC
MOV CX, 4
MOV BX, SI
ADD BX, BX
LOOP1:
MOV AL, [BUFFER+BX]
CMP AL, [BUFFER+BX+2]
JBE SKIP
MOV DL, [BUFFER+BX]
MOV [BUFFER+BX], [BUFFER+BX+2]
MOV [BUFFER+BX+2], DL
MOV DL, [BUFFER+BX+1]
MOV [BUFFER+BX+1], [BUFFER+BX+3]
MOV [BUFFER+BX+3], DL
SKIP:
ADD BX, 1
LOOP LOOP1
RET
SORT_NAME ENDP
```
此程序使用了一个BUFFER数组来存储输入的人名。`INPUT_NAME`过程从键盘输入一个四字母的人名,并将其存储在BUFFER中。`SORT_NAME`过程对一个人名进行排序,将结果存储在BUFFER中。在主程序中,程序循环10次,每次输入一个人名并进行排序,最后将排序结果输出到屏幕上。