汇编语言,编写一个程序对合格的人和不合格的人进行分类
时间: 2023-06-13 12:03:45 浏览: 55
以下是一个简单的汇编语言程序,用于对人员进行分类:
```
.model small
.stack 100h
.data
msg1 db '请输入人员数量:$'
msg2 db '第', 0ah, '个人是否合格(1为合格,0为不合格):$'
msg3 db '合格的人数为:$'
msg4 db '不合格的人数为:$'
.code
main proc
mov ax, @data
mov ds, ax
; 读取人员数量
mov ah, 9
lea dx, msg1
int 21h
mov ah, 1
int 21h
sub al, 30h ; 将 ASCII 码转换为数字
mov bl, al ; 将人员数量保存在 bl 中
; 统计合格和不合格的人数
mov cx, 0 ; 合格人数
mov dx, 0 ; 不合格人数
mov ah, 9
lea dx, msg2
loop_start:
int 21h ; 读取一个人员的合格性
cmp al, 1
je qualified ; 跳转到 qualified 标签
unqualified:
inc dx ; 不合格人数加一
jmp next_person ; 跳转到 next_person 标签
qualified:
inc cx ; 合格人数加一
next_person:
dec bl ; 扫描下一个人员
jnz loop_start ; 继续循环,直到扫描完所有人员
; 输出合格和不合格的人数
mov ah, 9
lea dx, msg3
int 21h
mov ah, 2
mov dl, cl ; 输出合格人数
add dl, 30h ; 将数字转换为 ASCII 码
int 21h
mov ah, 9
lea dx, msg4
int 21h
mov ah, 2
mov dl, dl ; 输出不合格人数
add dl, 30h ; 将数字转换为 ASCII 码
int 21h
mov ah, 4ch
int 21h
main endp
end main
```
该程序会要求用户输入人员数量,然后逐个询问每个人员是否合格(1为合格,0为不合格),并统计合格和不合格的人数。最后,程序会输出合格和不合格的人数。