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ử mt 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 mi bài thi . Đeơ làm đieău này cĩ theơ toơng theo ct roăi chia cho 5 .
Thut tố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ê đ đị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 ct thứ 4
XOR BX,BX ; BX chư hàng thứ nhât XOR AX,AX ; AX chứa toơng theo ct ; Toơng đieơm tređn ct 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 ; xố 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 ct tiêp
; un til j=0
Chương 7 : Mạng và các chê đ đị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.