用8086汇编语言写下面一段代码,有30个员工年龄存放在内存板中,给了一个名称age,age+表示工号为a+1的员工年龄,统计年龄50岁以上的和35岁以下的员工个数,分别放在两个内存区,一个是high,一个是low。
时间: 2024-09-17 20:03:40 浏览: 62
在8086汇编语言中,我们需要设置变量、偏移量、循环结构以及计数器来完成这个任务。以下是一个简单的示例代码:
```assembly
; 定义全局变量
.data
ages dw 30 dup(?) ; 30个员工年龄数组
high dw ? ; 高于50岁的员工个数
low dw ? ; 低于35岁的员工个数
; 定义工作区域和偏移地址
.code
mov ax, @data ; 设置当前段寄存器为数据段
mov ds, ax ; 初始化数据段指针
start_loop:
; 加一的偏移地址(假设数组从0开始)
lea si, [ages + a*2] ; si指向当前员工年龄
; 检查年龄是否大于等于50
cmp word [si], 50
jge above_50
; 年龄小于35,累加到low
dec low
jmp next_employee
above_50:
; 年龄大于等于50,累加到high
inc high
next_employee:
; 再次检查下一个员工年龄
inc si ; 移动到下一个年龄
loop start_loop ; 如果a < 30,则继续循环
end_loop:
; 程序结束前将结果存储回内存
mov [high], high
mov [low], low
; 结束程序
mov ah, 4Ch
int 21h
; 这里'a'是实际的员工编号,需要用户输入或者外部传入
; 注意:上述代码没有处理用户输入和循环控制,你需要根据实际情况添加这部分代码
阅读全文