嗯,问题很简单:我如何为代码中的数据分配空间。
我尝试执行以下操作:
ReadArrayLength PROC
pusha
messageArrayLength db "Enter the number of the bytes in array: $"
mov dx, OFFSET messageArrayLength
mov ah, 09h
int 21h
popa
ret
ENDP
但是当我调试程序并调用此程序时,我的turbo汇编程序卡住了。有什么办法可以创建一个新的数据字段并对其进行操作吗?
答案 0 :(得分:1)
这里最简单的解决方案似乎是跳过数据:
ReadArrayLength PROC
pusha
jmp @@1
messageArrayLength db "Enter the number of the bytes in array: $"
@@1:
mov dx, OFFSET messageArrayLength
mov ah, 09h
int 21h
popa
ret
ENDP
答案 1 :(得分:0)
在汇编代码中嵌入数据的标准方法是:
some_proc proc near
call @after_data ; <-- store on the stack the return address
@return_address: ; it will point exactly here
db 'String',0 ; a string
db 0FFh,0FEh ; array of bytes
dd 0ABBAh ; DWORD
@after_data:
pop dx ; pop the return address from the CALL
; dx = offset @return_address
...
some_proc endp
这也会创建偏移的独立代码。