Ưùng dúng đeơ tính trung bình

Một phần của tài liệu Giáo trình hợp ngữ (Trang 103 - 105)

DIV BX OVERFLOW

7.6Ưùng dúng đeơ tính trung bình

find the positio nk of the largest element among A[1] A[i] Swap A[i] and A[k] ( uses procedure SWAP )

7.6Ưùng dúng đeơ tính trung bình

Giạ sử moơt lớp goăm 5 sinh vieđn và có 4 mođn thi . Kêt qụa cho bởi mạng 2 chieău như sau :

Teđn Sinh vieđn

TEST1 TEST2 TEST3 TEST4

MARY 67 45 98 33

SCOTT 70 56 87 44

GEORGE 82 72 89 40

BETH 80 67 95 50

SAM 78 76 92 60

Chúng ta sẽ viêt1 chương trình tính đieơm trung bình cho moêi bài thi . Đeơ làm đieău này có theơ toơng theo coơt roăi chia cho 5 .

Thuaơt toán : 1. j = 4 2. repeat

3. Sum the scores in column j

4. divide sum by 5 to get average in column j 5. j = j - 1

Chương 7 : Mạng và các chê đoơ địa chư 95 Trong đó bước 3 có theơ làm như sau :

Sum[j]= 0 i = 1

FOR 5 times DO

Sum[j]= Sum[j]+ Score[i, j] i = i + 1 END_FOR

Chương trình có theơ viêt như sau :

TITLE PGM7_4 : CLASS AVERAGE .MODEL SMALL .STACK 100H .DATA FIVE DB 5 SCORES DW 67,45,98,33 ; MARY DW 70,56,87,44 ;SCOTT DW 82,72,89,40 ;GEORGE DW 80,67,,95,50 ; BETH DW 78,76,92,60 ;SAM AVG DW 5 DUP (0) .CODE MAIN PROC MOV AX,@DATA MOV DS,AX ;J=4 REPEAT:

MOV SI,6 ; SI chư đên coơt thứ 4

XOR BX,BX ; BX chư hàng thứ nhât XOR AX,AX ; AX chứa toơng theo coơt ; Toơng đieơm tređn coơt j

FOR:

ADD AX , SCORES[BX+SI]

ADD BX,8 ; BX chư đên hàng thứ 2 LOOP FOR

; end_for

; tính trung bình coơt j

XOR DX,DX ; xoá phaăn cao cụa sô bị chia (DX:AX) DIV FIVE ; AX = AX/5

MOV AVG[SI],AX ; cât kêt qụa tređn mạng AVG SUB SI,2 ; đên coơt tiêp

; un til j=0

Chương 7 : Mạng và các chê đoơ địa chư 96 ;DOS EXIT MOV AH,4CH INT 21H MAIN ENDP END MAIN

Sau khi bieđn dịch chương tènh có theơ dùng DEBUG đeơ cháy và xem kêt qụa baỉng leơnh DUMP.

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Giáo trình hợp ngữ (Trang 103 - 105)