2011-10-06 28 views
0

我只想过简单的写.ASM代码TASM是在C工作对于++TASM简单的循环FPGA实现

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

如何我TASM实现它?

+1

请显示你到目前为止 – Mat

+0

我只是想知道如何用TASM编程一个简单的例子...我没有用TASM写任何东西 – pooya

+0

它通常被认为是一种很好的形式首先要问。去谷歌“tasm循环”,看看你可以找出你自己。试试吧。告诉我们它是否有效......然后回到我们身边。 –

回答

0

从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++,哈哈)。祝你好运!这很难,但同时很有趣(至少对我而言)。

+0

顺便说一句,DOS函数9不会打印任何超出“$”字符的东西。所以,最后一个CR/LF对是不必要的,或者应该放在“$”之前。 –

+0

好的,谢谢! – SalarianEngineer