汇编输出(我没有得到)
Assembly output (I did not get it)
我想在屏幕上打印单个字符串computer
但我的输出显示字符串两次,如下所示:
computercomputer
我的代码:
data segment
mesaj db "computer$"
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
mov ax,@data
mov ds,ax
call ekransil
lea dx,mesaj
call yaz
yaz proc
mov ah,09
int 21h
ret
yaz endp
ekransil proc ;create procedur
mov ax,0600h
mov bh,74h
mov cx,0000h
mov dx,184fh
int 10h
ret
ekransil endp
int 20h
end start ;finish program
为什么数据段中的值显示打印了两次?我不明白。谁帮帮我。
这条指令之后要执行的下一条指令是什么call yaz
?将执行以下指令
mov ah,09
int 21h
ret
因此你得到了 2x 'computer' 个单词。在这一行 call yaz
之后,你应该在程序或 ret
调用的末尾跳转。
你看到了吗?
call ekransil
lea dx,mesaj
call yaz
; next instructions to execute are below
yaz proc
mov ah,09
int 21h
ret
yaz endp
要避免重复显示您的字符串,您可以执行以下操作之一:
通常方式:
在 call yaz
之后添加 jmp exit
然后在 end start
之前添加这些行:
exit:
mov ah, 04ch ; exit the program
int 21h ; and return the control to your OS
首选方式:
或者您可以像这样在退出代码之后放置两个过程的定义:
mov ah, 04ch ; exit
int 21h ; code
yaz proc ; definition of first procedure
mov ah,09
int 21h
ret
yaz endp
ekransil proc ; definition of second procedure
mov ax,0600h
mov bh,74h
mov cx,0000h
mov dx,184fh
int 10h
ret
ekransil endp
end start ; finish program
请注意,在首选版本中,我们不必 jmp
标记 exit
并定义它。它比前者更受欢迎,因为它使您的程序看起来不那么混乱,并且您可以将过程的所有定义与主过程(开始)分开。此外,它对调试非常有帮助。
干杯 Ahtisham :)
我想在屏幕上打印单个字符串computer
但我的输出显示字符串两次,如下所示:
computercomputer
我的代码:
data segment
mesaj db "computer$"
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
mov ax,@data
mov ds,ax
call ekransil
lea dx,mesaj
call yaz
yaz proc
mov ah,09
int 21h
ret
yaz endp
ekransil proc ;create procedur
mov ax,0600h
mov bh,74h
mov cx,0000h
mov dx,184fh
int 10h
ret
ekransil endp
int 20h
end start ;finish program
为什么数据段中的值显示打印了两次?我不明白。谁帮帮我。
这条指令之后要执行的下一条指令是什么call yaz
?将执行以下指令
mov ah,09
int 21h
ret
因此你得到了 2x 'computer' 个单词。在这一行 call yaz
之后,你应该在程序或 ret
调用的末尾跳转。
你看到了吗?
call ekransil
lea dx,mesaj
call yaz
; next instructions to execute are below
yaz proc
mov ah,09
int 21h
ret
yaz endp
要避免重复显示您的字符串,您可以执行以下操作之一:
通常方式:
在 call yaz
之后添加 jmp exit
然后在 end start
之前添加这些行:
exit:
mov ah, 04ch ; exit the program
int 21h ; and return the control to your OS
首选方式:
或者您可以像这样在退出代码之后放置两个过程的定义:
mov ah, 04ch ; exit
int 21h ; code
yaz proc ; definition of first procedure
mov ah,09
int 21h
ret
yaz endp
ekransil proc ; definition of second procedure
mov ax,0600h
mov bh,74h
mov cx,0000h
mov dx,184fh
int 10h
ret
ekransil endp
end start ; finish program
请注意,在首选版本中,我们不必 jmp
标记 exit
并定义它。它比前者更受欢迎,因为它使您的程序看起来不那么混乱,并且您可以将过程的所有定义与主过程(开始)分开。此外,它对调试非常有帮助。
干杯 Ahtisham :)