Assembly 如何在8086汇编程序中使用本地标签?
我写的很简单Assembly 如何在8086汇编程序中使用本地标签?,assembly,dos,x86-16,dosbox,Assembly,Dos,X86 16,Dosbox,我写的很简单 .MODEL small .STACK 100h .DATA liczba dw 0h licznik dw 0 potega dw 1 liczbaString dw ? buff db 26 .CODE Program: mov ax, @DATA mov ds, ax call PobierzString call PetlaIteracjiZnaku ;zwraca do ax
.MODEL small
.STACK 100h
.DATA
liczba dw 0h
licznik dw 0
potega dw 1
liczbaString dw ?
buff db 26
.CODE
Program:
mov ax, @DATA
mov ds, ax
call PobierzString
call PetlaIteracjiZnaku
;zwraca do ax pobraną liczbę
PetlaIteracjiZnaku PROC
mov si, liczbaString
call ZnajdzDlugoscString
mov si, liczbaString
add si, 2
mov bl, 1
petla:
xor ax, ax
mov al, [si]
cmp al, 24h; sprawdza czy nie jest koniec wprowadzanej liczby '$'
je return
sub al, 30h ; odejmuję 30 żeby zamienić znak na liczbę
mul bx
add [liczba], ax
mov ax, bx
mov bx, 0Ah
mul bx
mov bx, ax
inc si
jmp petla
return:
ret
PetlaIteracjiZnaku ENDP
; ! si - caly string
; - ax - dlugosc stringu
ZnajdzDlugoscString PROC
mov al, 0h
petla:
mov dl, [si]
cmp dl, 24h
je return
inc al
jmp petla
return:
ret
ZnajdzDlugoscString ENDP
PobierzString PROC
xor ax,ax
mov ah, 0Ah
mov dx, offset buff
int 21h
mov liczbaString, dx
ret
PobierzString ENDP
Koniec:
mov ah, 4ch
int 21h
end Program
但是我不能用tasm编译它,因为我得到了错误:
符号已定义:PETLA已定义符号:返回 如何在程序中使用本地标签?我试图将
.PETLA
和%%PETLA
添加到中,但仍然不起作用。我不知道如何实现这一点…要在TASM过程中使用本地标签,您需要:
- 使用
前缀作为标签名称;及@
- 将
放在文件的开头LOCALS@
@
,但@
是常见的前缀
请参阅。要在TASM过程中使用本地标签,您需要:
- 使用
前缀作为标签名称;及@
- 将
放在文件的开头LOCALS@
@
,但@
是常见的前缀
看