【问题标题】:Tasm local variablesTasm 局部变量
【发布时间】:2014-11-29 11:59:15
【问题描述】:

使用 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 更改第二个变量。

【问题讨论】:

    标签: assembly local tasm


    【解决方案1】:

    您的函数头不完整。要强制 Turbo Assembler 创建结语和序言,您必须添加一种语言(例如 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
    

    【讨论】:

      猜你喜欢
      • 2021-03-17
      • 1970-01-01
      • 2019-07-24
      • 2017-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多