الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استفسار بسيط عن البرنامج؟؟

بدأه فــوفــو في 27 مايو 2008 · 1 رد · 786 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم برنامج لجمع عددين الذي سبق ان سأل عنه ومبادرة احد الاخوان فيه المسااعده ارجوو مساعدتي في سؤاالي؟؟

page 60,132

.MODEL    SMALL
.STACK    100H
.DATA
    PROMPT_1    DB        'Enter The Decimal Number  : $'
PROMPT_2   DB        'Enter  The Decimal second Number  : $'
k       DB         0DH,0AH,'The sum is : $'
MSG        dw ?

.CODE

    MAIN PROC

            MOV AX,@DATA
            MOV DS,AX

            MOV AH,9
            LEA    DX,PROMPT_1
            INT 21H


            CALL INPUT_DECIMAL

            PUSH AX


  MOV AH,9
            LEA    DX,PROMPT_2
            INT 21H


            CALL f 

            PUSH dx






            MOV AH,9
            LEA    DX,k
            INT 21H



add ax,dx
add ax,30h



MOV Ah,2
         mov dx,ah
            INT 21H

MOV Ah,2
         mov dl,al
INT 21H


            POP AX
pop dx








            MOV Ax,4C00H
            INT 21H

    MAIN ENDP


    INPUT_DECIMAL PROC
        @BEGIN:    
                XOR CX,CX
                XOR BX,BX

                MOV AH,1
                INT 21H

                CMP AL,0DH
                JE    @END_INPUT

                CMP AL,'-'
                JE    @MINUS

                CMP AL,'+'
                JE    @PLUS

                JMP @INPUT

        @MINUS:

                MOV CX,1

        @PLUS :
                INT 21H

        @INPUT:
                CMP AL,'0'
                JL    @ERROR

                CMP AL,'9'
                JG    @ERROR

                AND AX,000FH

                PUSH AX

                MOV AX,10
                MUL BX    
                POP BX
                ADD BX,AX

                MOV AH,1
                INT 21H
                CMP AL,0DH
                JE    @END_INPUT

                JMP @INPUT

        @END_INPUT:

                MOV AX,BX

                CMP CX,1
                JNE    @NEXT

                NEG    AX

            @NEXT:

                RET

        @ERROR:
             MOV AH,2
             MOV DL,0DH
             INT 21H
             MOV DL,0AH
             INT 21H

             JMP @BEGIN

    INPUT_DECIMAL ENDP

    f PROC
        @B:    
                XOR CX,CX
                XOR BX,BX

                MOV AH,1
                INT 21H

                CMP AL,0DH
                JE    @EN

                CMP AL,'-'
                JE    @MINUS

                CMP AL,'+'
                JE    @PLUS

                JMP @I

        @M:

                MOV CX,1

        @P :
                INT 21H

        @I:
                CMP AL,'0'
                JL    @ER

                CMP AL,'9'
                JG    @ERROR

                AND AX,000FH

                PUSH dx

                MOV dx,10
                MUL BX    
                POP BX
                ADD BX,dx

                MOV AH,1
                INT 21H
                CMP AL,0DH
                JE    @EN

                JMP @I

        @EN:

                MOV dx,BX

                CMP CX,1
                JNE    @NEXT

                NEG    dx

            @NEX:

                RET

        @ER:
             MOV AH,2
             MOV DL,0DH
             INT 21H
             MOV DL,0AH
             INT 21H

             JMP @B


   f ENDP


            RET     

END MAIN

البرنامج تطبق لكن كود ناتج الجمع غير صحيح؟

ينتج رموز؟؟

#2
اقتباس
بكلا الأحوال انتبه الى ان الجمع في الاسمبلي يخضع الى انظمة العد. 5 + 5 != 10

/index.ph...10&start=10

rasool4k.gif

[وسط]mimetex.cgi?MSN:root@root-shell.net.

[/وسط]

مواضيع مشابهة