A. *_*zak 0 assembly tasm x86-16
我写的简单
\n\n.MODEL small\n\n.STACK 100h\n.DATA \n liczba dw 0h\n licznik dw 0\n potega dw 1\n liczbaString dw ?\n\n buff db 26\n.CODE\n Program:\n mov ax, @DATA\n mov ds, ax\n\n call PobierzString\n call PetlaIteracjiZnaku\n\n ;zwraca do ax pobran\xc4\x85 liczb\xc4\x99\n PetlaIteracjiZnaku PROC\n mov si, liczbaString\n call ZnajdzDlugoscString\n mov si, liczbaString\n add si, 2\n mov bl, 1\n petla:\n xor ax, ax\n mov al, [si]\n cmp al, 24h; sprawdza czy nie jest koniec wprowadzanej liczby \'$\'\n je return\n sub al, 30h ; odejmuj\xc4\x99 30 \xc5\xbceby zamieni\xc4\x87 znak na liczb\xc4\x99\n mul bx\n add [liczba], ax\n mov ax, bx\n mov bx, 0Ah\n mul bx\n mov bx, ax\n inc si\n jmp petla\n return:\n ret\n PetlaIteracjiZnaku ENDP\n\n ; ! si - caly string \n ; - ax - dlugosc stringu\n ZnajdzDlugoscString PROC\n mov al, 0h\n petla:\n mov dl, [si]\n cmp dl, 24h\n je return\n inc al\n jmp petla\n return: \n ret\n ZnajdzDlugoscString ENDP\n\n PobierzString PROC\n xor ax,ax\n mov ah, 0Ah \n mov dx, offset buff\n int 21h \n mov liczbaString, dx\n ret\n PobierzString ENDP\n Koniec:\n mov ah, 4ch\n int 21h\n\n end Program\nRun Code Online (Sandbox Code Playgroud)\n\n但我无法用 tasm 编译它,因为我收到错误:
\n\n\n\n\n符号已定义为:PETLA
\n
\n 符号已定义,否则:RETURN
如何在程序中使用本地标签?我尝试添加.PETLAand %%PETLAas使用过程范围以避免本地标签?但它仍然不起作用。
\n我不知道如何实现这个...
要在 TASM 过程中使用本地标签,您需要:
@@标签名称的前缀;和LOCALS @@文件的开头。您可以使用不同的前缀来代替@@,但@@它是通用的。
请参阅《TASM 用户指南》第 130 页。