Tasm局部变量

时间:2014-11-29 11:59:16

标签: assembly local tasm

使用Tasm 1.4并尝试在过程中创建和操作局部变量:

findMins PROC
    local z:word:1 ;outer loop counter
    local j:word:1 ;inner loop counter
    mov cx, rows ;outer loop total iterations
    mov z, 0 
    RowsLoop:
        push cx ; save outer iterations left
        mov cx,cols ; inner iterations
        mov j, 2
        ColsLoop:
        //some code
        loop ColsLoop
        //some code
    loop RowsLoop       
    ret
ENDP

mov j, 2此指令会更改j和z局部变量。我应该如何创建仅在函数内部看到并且它们不同的变量,例如我不想用操作mov j, 2更改第二个变量。

1 个答案:

答案 0 :(得分:2)

您的功能标题尚未完成。要强制Turbo汇编程序创建结尾语和序言,您必须添加一种语言(例如C或PASCAL):findMins PROC C

要使变量(和其他符号)成为本地变量,您必须加上@@前缀(例如@@z)并在程序开头添加LOCALS

LOCALS
.MODEL small
.STACK 1000h
.DATA
    rows dw 3
    cols dw 7
.CODE
main PROC
    MOV ax, @data
    MOV ds, ax

    call findMins

    mov ax, 4C00h
    int 21h

main ENDP

findMins PROC C
    local @@z:word:1 ;outer loop counter
    local @@j:word:1 ;inner loop counter
    mov cx, rows ;outer loop total iterations
    mov @@z, 0
    RowsLoop:
        push cx ; save outer iterations left
        mov cx,cols ; inner iterations
        mov @@j, 2
        ColsLoop:
        ;some code
        loop ColsLoop
        ;some code
    loop RowsLoop
    ret
ENDP

END main