汇编语言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等。编译并运行代码后,按照提示从键盘输入十个人名,然后会按照字母上升次序进行显示。