有下面的一組學生成績數據,編程序求出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