アセンブリで for ループを実行しようとしています。TASM と TLINK を使用しています。教授がくれたライブラリもありますが、すべて自分でやろうとしていますが、驚いたことに、うまくいきません。そのため、教授のコードをコピーして貼り付けただけで、同じエラーが発生します。エラーは次のとおりです。
TASMでコンパイルできます。.exeを作成して実行しても、実行した後、本来の処理を実行する代わりに、「構文エラー」と表示されます。
これが私のコードです:
MODEL small
.stack 100h
N equ 20
.DATA
mensaje db "Hola mundo",10,13,"$"
mensajefin db "Finalizo el for, presiona cualquier tecla para terminar$"
i db (?)
.code
imprimefor PROC
mov ax,@data
mov ds,ax
mov ah,03h
int 10h
mov [i],0
@@for_cmp: cmp [i],N
ja @@for_end
mov dx,offset mensaje
mov ah,09h
int 21h
inc [i]
jmp @@for_cmp
@@for_end: mov dx,offset mensajefin
mov ah,09h
int 21h
mov ah,01h
int 21h
mov ax,4c00h
int 21
ENDP
END
これが私の教授のものです:
MODEL small
.STACK 100h
;----- Insert INCLUDE "filename" directives here
;----- Insert EQU and = equates here
INCLUDE procs.inc
LOCALS
N equ 20
CR EQU 13
LF EQU 10
.DATA
mens db 'Hola Mundo',CR,LF,0
i db (?)
.CODE
;----- Insert program, subrutine call, etc., here
Principal PROC
mov ax,@data
mov ds,ax
call clrscr
; i=0
mov [i],0
; i<n
@@cmp_for: cmp [i],N
ja @@fin_for
mov al,[i]
inc al
add al,30h ; convierte a ASCII
call putchar
mov ax,'-'
call putchar
mov dx,offset mens
call puts
; i++
inc [i]
jmp @@cmp_for
@@fin_for: call getch
mov ah,04ch ; fin de programa
mov al,0 ;
int 21h ;
ENDP
END
私は多くの場所を調べましたが、役立つものを見つけることができませんでした。助言がありますか?また、私の教授は足を骨折しているため、私たちに授業を教えていないので、私たちはちょっとうんざりしています.