【问题标题】:How to fix "Expecting pointer type" and "symbol already different kind" in macros如何修复宏中的“期望指针类型”和“符号已经不同类型”
【发布时间】:2018-12-27 15:46:04
【问题描述】:

我不确定自己做错了什么。

我尝试在宏中添加前缀 @@ 以及在宏中声明本地 @@label,但没有成功。

我也查看了这个网站link 以及之前的问题中提到的......它没有工作。

.286
.model small
.stack 100h

writeString macro string, length, x, y, color
    mov ah, 13h
    mov al, 0
    mov bh, 0
    mov bl, color
    lea bp, string
    mov cx, length
    mov dl, x
    mov dh, y
    int 10h
endm

draw_box_outline macro x_fin,y_fin,x_ini,y_ini

    local col_draw,row_draw,row_rev,col_rev

    mov cx,x_ini
    mov dx,y_ini
    mov ah,0ch
    mov al,1111b
    int 10h

    col_draw:
    inc cx
    int 10h
    cmp cx,x_fin
    jb col_draw    

    row_draw:
    inc dx
    int 10h
    cmp dx,y_fin
    jb row_draw

    row_rev:
    dec cx
    int 10h
    cmp cx,x_ini
    ja row_rev

    col_rev:
    dec dx
    int 10h
    cmp dx,y_ini
    ja col_rev
endm

.data
msg db "Select Number of Player/s$"
msg1 db "1$"

;box parameters
b1_col_ini equ 50
b1_row_ini equ 110
b1_col_fin equ 90
b1_row_fin equ 150

b2_col_ini equ 130
b2_row_ini equ 110
b2_col_fin equ 170
b2_row_fin equ 150

b3_col_ini equ 210
b3_row_ini equ 110
b3_col_fin equ 250
b3_row_fin equ 150

.code
org 100h
main proc far
    mov ax,@data
    mov ds,ax
    mov es,ax

    mov ah,0h
    mov al,13h
    mov bh,0
    int 10h

    writeString msg,25,7,10,1111b

    draw_box_outline b1_col_fin,b1_row_fin,b1_col_ini,b1_row_ini
    draw_box_outline b2_col_fin,b2_row_fin,b2_col_ini,b2_row_ini
    draw_box_outline b3_col_fin,b3_row_fin,b3_col_ini,b3_row_ini

    writeString msg,25,7,10,1111b
    ;implement cursor press and detection
    ;implement cursor hide

    mov ax,4c00h
    int 21h
main endp
end main   

在 DOSBox 中,我不断收到错误消息“预期的指针类型”和“符号已经不同类型”,但在 emu8086 中,没有任何问题。

【问题讨论】:

    标签: assembly x86-16 tasm


    【解决方案1】:

    LOCAL 指令必须位于宏的开头。宏声明和 LOCAL 行之间的空白行已经太多了。它应该是这样的:

    draw_box_outline macro x_fin,y_fin,x_ini,y_ini
    local col_draw,row_draw,row_rev,col_rev
    

    另外,请看这里:TASM; LOCAL and LOCALS directives

    【讨论】:

    • 哦,我不知道。我以前读过那个帖子,但我不太确定他的意思。不过,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    相关资源
    最近更新 更多