有下面的一组学生成绩数据,编程序求出Tomy同学的总分,最后结果存放在AX中(更强功能还可以继续期待哦!)
nam | ‘Tomy’ | ‘John’ | ‘Mary’ | ‘Jone’ |
---|---|---|---|---|
c | 78 | 82 | 75 | 92 |
asm | 66 | 79 | 95 | 87 |
math | 78 | 93 | 74 100 | |
chinese | 90 | 78 | 56 | 63 |
请在下面程序基础上完成功能:
要求在程序中必要处要写上注释。写程序前,可以画规范的流程图以整理思路。
assume cs:code,ds:data
data segment
nam db 'Tomy', 'John', 'Mary', 'Jone'
c dw 78, 82, 75, 92
asm dw 66, 79, 95, 87
math dw 78, 93, 74, 100
chinese dw 90, 78, 56, 63
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,4c00h
int 21h
code ends
end start
提示:Tomy同学的总分是138H。
【参考解答】
assume cs:code,ds:data
data segment
nam db 'Tomy', 'John', 'Mary', 'Jone'
c dw 78, 82, 75, 92
asm dw 66, 79, 95, 87
math dw 78, 93, 74, 100
chinese dw 90, 78, 56, 63
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax, 0 ;存放总成绩
mov bx, 16 ;取Tomy第一科成绩的偏移地址
mov cx, 4
lop:add ax, [bx] ;累加成绩
add bx, 8 ;取Tomy的下一科成绩的偏移地址
loop lop
mov ax,4c00h
int 21h
code ends
end start