基本汇编语言程序设计 [例4.88]已 知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB 表中,要查的学生学号放在变量NO中,查出的英语成绩放在变量EN中。详细说出具体设计思路及代码注释.
时间: 2024-03-03 12:52:46 浏览: 29
这个问题需要编写一段基于汇编语言的程序,目的是从一个已经按学号从小到大排序好的英语成绩表中查找某个学生的成绩。以下是具体的设计思路和代码注释:
设计思路:
1. 初始化计数器 CX,将其置为0,准备开始遍历英语成绩表。
2. 检查当前学生的学号是否等于要查找的学生学号 NO。
a. 如果相等,则将该学生的成绩保存在变量 EN 中,并跳转到结束程序的位置。
b. 如果不相等,则将计数器 CX 加1,继续遍历英语成绩表。
3. 如果遍历完整个英语成绩表,仍然没有找到要查找的学生学号,则将变量 EN 置为-1,表示未找到。
代码注释:
```
; 初始化计数器 CX
MOV CX, 0
; 开始遍历英语成绩表
LOOP_START:
; 检查当前学生的学号是否等于要查找的学生学号 NO
CMP CX, NO
; 如果相等,则将该学生的成绩保存在变量 EN 中,并跳转到结束程序的位置
JE FOUND
; 如果不相等,则将计数器 CX 加1,继续遍历英语成绩表
INC CX
; 如果遍历完整个英语成绩表,仍然没有找到要查找的学生学号,则将变量 EN 置为-1,表示未找到
CMP CX, LENGTH
JL LOOP_START
MOV EN, -1
; 结束程序
JMP END_PROGRAM
; 找到要查找的学生学号,将该学生的成绩保存在变量 EN 中
FOUND:
MOV EN, TAB[CX]
; 结束程序
END_PROGRAM:
RET
```
其中,TAB 表表示英语成绩表,LENGTH 表示英语成绩表的长度,NO 表示要查找的学生学号,EN 表示查找到的学生英语成绩。这段程序的思路比较简单,主要是通过遍历整个英语成绩表,逐个比对学生学号来查找要找的学生,并保存其英语成绩。