我正在使用masm和dosbox。在我的程序中,我有3个类似于proc down_left(下面)的程序。在这四个过程中的每一个都使用相同的名称:“down_edge,right_edge,left_edge,up_edge,corner,done,next,normal,czykrawedzboczna”。
如何为每个proc设置这些名称? 我试过像“LOCAL down_edge,right_edge,......”这样的东西。但它不起作用。
proc down_left
pusha
LOCAL down_edge, right_edge, left_edge, up_edgelcorner, done, next, normal, czykrawedzboczna
mov ah,es:[bishop] ;x - biskupa
mov al,es:[bishop+1] ;y - biskupa
cmp ah,0
jne next
cmp al,8
je done
next:
cmp al,8
je down_edge ; dolna krawedz
cmp ah,0 ;Czy x=0, y<{0,1,2,3,4,5,6,7,8}
jne normal
mov cl,0
czykrawedzboczna: ;lewa krawedz
cmp al,cl
je left_edge
add cl,1
cmp cl,8
ja normal
jmp czykrawedzboczna
normal:
dec ah
dec al
jmp done
down_edge:
dec ah
jmp done
left_edge:
dec al
jmp done
done:
xor bx,bx
mov bl,nr ah al
inc es:[tablica+bx]
mov es:[bishop],ah ;x - biskupa ZAPISZ BIERZACE POLOZENIE BISKUPA
mov es:[bishop+1],al ;y - biskupa
popa
ret
down_left endp
答案 0 :(得分:0)
较新的MASM(&gt; = 6)中的标签在PROC和ENDP之间是本地的。较旧的MASM在.MODEL指令中还需要一个langtype,例如: .MODEL small, C
。
Emu8086不提供本地“程序”标签。你可能会使用棘手的工作,但我建议反对它
关于DOSBox中的调试,谷歌搜索“turbo debugger”。
答案 1 :(得分:0)
如果您使用的是emu8086,并且您需要多次调用宏,则您必须在宏部分中声明您的标签,例如LOCAL label1,label2