سلام دوستان این عکس رو نگاه کنید
من میخوام به جا عدد کامل عدد اول رو برسی کنه
ممنون
datasg SEGMENT
x DB 5
datasg ENDS
;----------------------------
codesg SEGMENT
ASSUME DS:datasg,CS:codesg
main PROC FAR
MOV AX,datasg
MOV DS,AX
;******************
MOV CX,1
MOV BL,1
l1:
INC BL
CMP BL,x
JE exit
MOV AL,x
MOV AH,0
DIV BL
CMP AH,0
JNE l1
MOV CX,0
exit:
;******************
MOV AX,4C00h
INT 21h
main ENDP
codesg ENDS
;----------------------------
END main
.MODEL SMALL
.DATA
x DB 5
.CODE
.STARTUP
MOV CX,1
MOV BL,1
l1:
INC BL
CMP BL,x
JE l2
MOV AL,x
MOV AH,0
DIV BL
CMP AH,0
JNE l1
MOV CX,0
l2:
.EXIT
.STACK
END
مساله جا شدن و نشدن نیست، تعریف دستور MOV طوری یه که یک داده با حجم مشخص رو از یک جا به جای دیگری منتقل کنه،ممنون استاد
چند تا سوال :
شما عرض کردید MOV AX,x قابل اجرا نیست چون x یک بایت (DB) تعریف شده است و AX دو بایت است.
اما تو کد mov ax,x نداره !! بعد اگه ایکس یه بایت باشه تو دو بایت جا نمیشه ؟؟؟
من از ML (اسمبلر MASM نسخه 6.11) استفاده می کنم.سوال دوم :شما از چه اسمبلری استفاده کردید
این کد مساله زیر رو حل می کنه :سوال اخر : این برنامه ای که نوشتید چیکار میکنه ؟؟؟ تو سوال کتاب عدد کامل رو برسی میکنه. من میخواستم عدد اول رو برسی کنه ؟ ایا کد شما عدد اول برسی کرده ؟
ممنون استاد
ببخشید میشه از برچست l1 به بعد کنار خط هاش برام بگید این خط چیکار میکنه ممنوننن
l1:
INC BL
CMP BL,x
JE l2
MOV AL,x
MOV AH,0
DIV BL
CMP AH,0
JNE l1
MOV CX,0
l2:
.EXIT