Реализация TASM SIMPLE LOOP - PullRequest
       8

Реализация TASM SIMPLE LOOP

0 голосов
/ 07 октября 2011

Я просто хочу написать простой .asm-код для TASM, который работает так же, как в C ++

int t=2;
for(int i=0;i<2;i++)
t=t+(i-1)*7*t;

Как я могу реализовать его с помощью TASM?

1 Ответ

0 голосов
/ 28 апреля 2012

Это будет цикл от 1 до 100 в 8086 TASM:

    .MODEL SMALL

    .STACK 100h

    .DATA   
    Finished DB 10, 13, 'Loop x 100 finished.  Congratulations! $', 10, 13

    .CODE

    MAIN PROC

            MOV AX, @data            ; Required at the start of every program (inside your main procedure, from what I've seen)
            MOV DS, AX

            MOV CX, 100              ; Set CX to 100
            MOV BX, 0                ; Counter (for double-verification, I guess...lol)

    StrtLoop:                        ; When a loop starts, it does CX-- (subtracts 1 from CX)   

            INC BX                    ; This does BX++, which increments BX by 1

    LOOP StrtLoop                     ; Go back to StrtLoop label

            CMP BX, 100              ; Compare BX to 100...
            JE DispMsg               ; Jump-if-Equal...CMP BX, 100 sets flags, and if they are set,
                                     ;  JE will Jump you to DispMsg (to get "congratulations" message).

            JMP SkipMsg              ; Jump to the SkipMsg label (so you don't see the "congratulations" message).

    DispMsg:                         ; If BX = 100, you JE here.
            MOV AH, 09H              ; Displays the message stored in the defined byte "Finished"
            MOV DX, OFFSET Finished
            INT 21H
    SkipMsg:                         ; If BX != 100, you JMP here.
            MOV AL, 0h               ; Op code to exit to DOS from the assembler.
            MOV AH, 4CH
            INT 21H

    MAIN ENDP
    END MAIN

Надеюсь, это поможет.Я сделал основной цикл, так что вы можете делать другие части вашего кода (и я не знаю C ++, смеется).Удачи!Это тяжело, но одновременно весело (по крайней мере, для меня).

...