汇编8086如何从键盘接收十个人名,人名由四个字母构成。按字母上升次序显示所输入的人名,每一个人名占一行?

汇编语言8086从键盘接收十个人名,人名由四个字母构成。按字母上升次序显示所输入的人名,每一个人名占一行

大概看着汇编知识看了下,看看对你是否有所帮助,请给我一个采纳哦,谢谢啦

.model small
.stack 100h

.data
    names db 10 dup(4 dup(?))

.code
main proc
    mov ax, @data
    mov ds, ax

    mov cx, 10    ; 循环10次,接收10个人名
    lea di, names ; 存储人名的数组地址

input_loop:
    mov ah, 01h   ; 从键盘读取一个字符
    int 21h       ; 调用21h中断

    mov [di], al  ; 将读取的字符存储到数组中
    inc di        ; 移动指针到下一个字符位置

    loop input_loop ; 继续循环读取下一个字符

    mov cx, 10    ; 循环10次,遍历已输入的人名
    lea si, names ; 读取人名的数组地址

output_loop:
    mov al, [si]  ; 读取一个字符
    mov ah, 02h   ; 用于显示一个字符
    int 21h       ; 调用21h中断显示字符

    inc si        ; 移动指针到下一个字符位置

    cmp si, offset names + 40 ; 判断是否输出结束
    jae end_prog

    cmp [si], '$' ; 判断是否一个人名输出结束
    jne output_loop ; 若未结束,继续输出下一个字符

    mov dl, 0Ah   ; 输出换行符
    mov ah, 02h
    int 21h

    jmp output_loop ; 继续输出下一个人名

end_prog:
    mov ah, 4Ch   ; 结束程序
    int 21h
main endp

end main

上述汇编代码首先定义了一个大小为10的数组 names,用于存储输入的人名。然后,使用循环接收10个人名,每个人名由四个字母构成。接收过程中,将读取的字母依次存储到数组中。

接下来,再次使用循环遍历已输入的人名,并按照字母上升次序逐个显示出来。程序通过比较字符是否为 $ 判断一个人名是否结束,若未结束,则继续输出下一个字符。

最后,程序结束运行。

请注意,在运行该汇编代码之前,需要安装并配置合适的汇编语言8086开发环境,例如MASM、TASM等。编译并运行代码后,按照提示从键盘输入十个人名,然后会按照字母上升次序进行显示。