汇编语言,分类统计记录考试成绩的字节数组areay中优良、及格和不及格的个数,并分别存入内存字变量good、pass、fail中,array的数组元素分别为65、71、66,55,82,54,78,90,62
时间: 2023-07-10 19:18:38 浏览: 48
假设areay中存储的是一组考试成绩,每个成绩占用2个字节(16位),并且array是一个包含8个字节(64位)的字节数组,其中存储了三个内存字变量good、pass、fail的地址。
以下是一个汇编语言程序示例,可以对areay进行分类统计,并将结果存储在good、pass、fail变量中:
```
MOV CX, 0 ; 优良计数器
MOV DX, 0 ; 及格计数器
MOV BX, 0 ; 不及格计数器
MOV SI, OFFSET areay ; 将areay的地址存储在SI中
MOV AX, 0 ; 初始化AX为0
LOOP_START:
MOV AX, [SI] ; 将areay中的一个成绩存储在AX中
CMP AX, 80 ; 比较AX与80的大小
JAE GOOD ; 如果AX >= 80,则跳转到GOOD
CMP AX, 60 ; 比较AX与60的大小
JAE PASS ; 如果AX >= 60,则跳转到PASS
JMP FAIL ; 否则跳转到FAIL
GOOD:
INC CX ; 优良计数器加一
JMP CONTINUE ; 跳转到CONTINUE
PASS:
INC DX ; 及格计数器加一
JMP CONTINUE ; 跳转到CONTINUE
FAIL:
INC BX ; 不及格计数器加一
CONTINUE:
ADD SI, 2 ; SI加2,指向下一个成绩
CMP SI, OFFSET areay + 16 ; 比较SI与areay末尾地址的大小
JBE LOOP_START ; 如果SI <= areay末尾地址,则跳转到LOOP_START
; 将计数器的值存储到内存字变量中
MOV WORD PTR [array], CX ; 存储优良个数到good变量
MOV WORD PTR [array+2], DX ; 存储及格个数到pass变量
MOV WORD PTR [array+4], BX ; 存储不及格个数到fail变量
END:
```
在程序结束时,将计数器的值存储到内存字变量中。假设good、pass、fail的地址分别为array、array+2、array+4,则可以使用MOV指令将CX、DX、BX中的值分别存储到对应的内存字变量中。