ورود

View Full Version : سوال در مورد حلقه برنامه



alirah84
شنبه 03 خرداد 1393, 19:17 عصر
سلام
این برنامه بالاترین عدد رو از بین این 5 عدد پیدا میکنه.

DTSEG SEGMENT
GRADES DB 69,87,96,45,75
ORG 0008
HIGHEST DB ?
DTSEG ENDS


CDSEG SEGMENT
MAIN PROC FAR
ASSUME CS:CDSEG,DS:DTSEG,SS:STSEG
MOV AX,DTSEG
MOV DS,AX
MOV CX,05H
MOV BX,OFFSET GRADES
SUB AL,AL
AGAIN: CMP AL,[BX]
JA NEXT
MOV AL,[BX]
NEXT: INC BX
LOOP AGAIN
MOV HIGHEST ,AL
MOV AH,4CH
INT 21H

میخوام ببینم CX رو LOOP چک میکنه یا JA ?اگه CX رو LOOP چک میکنه،در مورد JNZ چطور؟

milad_d993
سه شنبه 06 خرداد 1393, 22:10 عصر
تعداد دفعات تکرار حلقه رو توی CX میریزیم. هر دفعه که برنامه به LOOP میرسه 1 واحد از CX کم میکنه؛
قبل از خط 17 مقدار AL رو با مقدار جایی که BX بهش اشاره میکنه مقایسه میکنه، اگه AX بزرگتر باشه از روی خط 18 میپره (اجراش نمیکنه)؛... بعد از رسیدن به LOOP یکی از CX کم میکنه و دوباره به خط 16 میپره

در مورد JNZ هم فک کنم اگه ziro flag صفر باشه به لیبلی که جلوش آورده شده پرش خواهد داشت (بعد از دستوراتی مثل جمع و تفریق و ...)