请你用8086汇编语言编写代码,统计一个学院300个新生,籍贯是湖北省,出生年月在18岁以下,数学+英语>255分的人数。
时间: 2024-02-22 10:01:26 浏览: 64
学生成绩统计程序,汇编语言编写
5星 · 资源好评率100%
好的,以下是一个可能的8086汇编语言代码示例,它可以解决您的问题:
```
; 段定义
assume cs:code
data segment
; 定义数据
COUNT db 0 ; 计数器
BIRTH_YEAR db ? ; 出生年份
PROVINCE db ? ; 省份
MATH_SCORE db ? ; 数学成绩
ENGLISH_SCORE db ? ; 英语成绩
data ends
; 代码段
code segment
start:
mov ax, data ; 初始化数据段地址
mov ds, ax
mov cx, 300 ; 设置循环次数
mov bx, 0 ; 初始化计数器
loop1:
; 读取出生年份
mov ah, 1
int 21h
sub al, '0' ; 转换为数字
mov BIRTH_YEAR, al
; 读取省份
mov ah, 1
int 21h
mov PROVINCE, al
; 读取数学成绩
mov ah, 1
int 21h
sub al, '0' ; 转换为数字
mov MATH_SCORE, al
; 读取英语成绩
mov ah, 1
int 21h
sub al, '0' ; 转换为数字
mov ENGLISH_SCORE, al
; 判断条件,统计人数
cmp PROVINCE, 'H' ; H 代表湖北省
jne loop2 ; 如果不是湖北省,跳过
sub al, 18 ; 计算年龄
cmp al, BIRTH_YEAR ; 判断是否小于18岁
jbe loop2 ; 如果大于等于18岁,跳过
add al, ENGLISH_SCORE ; 计算数学和英语总分
cmp al, 255 ; 判断总分是否大于255分
jb loop2 ; 如果小于255分,跳过
inc bx ; 统计符合条件的人数
loop2:
loop loop1
; 显示结果
mov ah, 9
lea dx, [COUNT]
int 21h
mov ah, 4ch ; 退出程序
int 21h
code ends
end start
```
请注意,这只是一个示例代码,您可能需要根据具体要求进行修改和调整。另外,该代码只适用于DOS环境下,如果您需要在其他环境下运行,请进行相应的修改。
阅读全文