Как выполнить прямую ссылку в сборке MASM Langauge?

.386
.MODEL FLAT
ExitProcess PROTO NEAR32 stdcall,dwExitCode:DWORD
Include io.h
cr equ 0DH
Lf equ 0AH

.STACK 4096
.DATA

number dword ?

string byte 40 dup(?)
rejected byte ", Rejected",cr,0
positiveNumber byte ", Positive",cr,0
negativeNumber byte ", Negative",cr,0
numberOfPos byte "Positive Numbers: ",0
numberOfNeg byte "Negative Numbers: ",0
runningSum byte "Running Sum of Positive numbers: ",0

newline byte cr,Lf,0

numaschar byte 11 dup(?),0
numPosaschar byte 11 dup(?),0
numNegaschar byte 11 dup(?),0
sumasChar byte 11 dup(?),0


    .code

_start:
    sub ebx,ebx ; numberOfPos = 0
    sub ecx,ecx ; numberOfNeg = 0
    sub edx,edx ; runningSum = 0


forever:    
    input string, 40
    atod string
    cmp eax,0
    je finish

    cmp eax,10
    jg invalid

    cmp eax,-10
    jl invalid

    cmp eax,0
    jg positive
    jl negative

    jmp jumpToMainLoop

positive:
    inc ebx
    add edx,eax
    dtoa numaschar,eax
    output numaschar
    output positiveNumber
    output newline

negative:   
    add ecx,1
    dtoa numaschar,eax
    output numaschar
    output negativeNumber
    output newline

invalid:    
    dtoa numaschar,eax
    output numaschar
    output rejected
    output newline


finish:     
    dtoa numPosaschar, ebx
    dtoa numNegaschar, ecx
    dtoa sumasChar, edx

    output numberOfPos
    output numPosaschar
    output newline
    output numberOfNeg
    output numNegaschar
    output newline
    output runningSum
    output sumasChar
    output newline


    INVOKE ExitProcess, 0
    PUBLIC _start
        END

jumpToMainLoop: 
    jmp forever

То, что я пытаюсь сделать, это создать прямую ссылку, в которой я возвращаюсь только к основному циклу (навсегда) в конце цикла. Прямо сейчас я только знаю, как вернуться к основному циклу, если я напишу `jmp jumpToMainLoop 'в конце каждой метки: недопустимый, положительный, отрицательный. Как мне настроить программу так, чтобы она только переходила навсегда в конце цикла?

1 ответ

jmp jumpToMainLoop

Это эквивалентно jmp forever,

Прямо сейчас я только знаю, как вернуться к основному циклу, если я напишу `jmp jumpToMainLoop'в конце каждой метки: недопустимый, положительный, отрицательный.

Почему бы тебе просто не написать jmp forever в этих 3 местах (сразу после output newline!

Другие вопросы по тегам