DIV BX OVERFLOW
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.