Q
TASM过程声明
0
A
回答
3
如果你不” t指定距离(在过程声明中使用NEAR
或FAR
),将从当前模型推断默认值。
对于TINY,COMPACT和小型的默认距离为
NEAR
。对于所有其他型号,FAR
是默认值。
这是真的只有当你使用简化的分割指令(例如.CODE
,.DATA
,.STACK
)否则NEAR
总是假设。
您也可以在.MODEL
指令中指定NEAR
或FAR
。
您可以通过在其声明中指定NEAR
或FAR
来覆盖过程的距离。
指定程序的距离自动的两个指令的生成:在过程中使用的ret
S和用于调用它的call
秒。
proc1 PROC NEAR
ret ;This generates the C3 opcode (near return)
proc1 ENDP
proc2 PROC FAR
ret ;This generates the CB opcode (far return)
proc2 ENDP
call proc1 ;This generates opcode E8 (call near relative direct)
call proc2 ;This generates opcode 9A (call far absolute direct)
你总是可以通过使用retf
和retn
说明和使用call NEAR PTR proc1
,call FAR PTR proc2
符明确。
当汇编遇到后来在源代码中声明的过程调用(从技术上说前宣布),则必须使用多遍以解析呼叫。
它首先假定它是一个近调用,当它遇到被调用过程的声明,并且它的距离不在汇编器附近时,需要另一个调用来纠正它的猜测并产生一个远调用。
多次通过可以与/m
开关被激活,否则在这种情况下,你会遇到的错误
向前参考需要重写。
我无法在网上找到TASM 5手册的PDF版本,唯一的来源是this scanned version of the manual。
第10章(pdf第128页,印刷版115)专用于程序声明。当procName proc
没有规定的距离(近或远),那么这是由模型确定:
1
从书Borland Turbo Assembler User's Guide,PDF格式(116英尺)的125页服用。如果指定距离(procName proc near
),则call
和ret
将相应地表现。
的模型是PDF 92页(83英尺):
MODEL CODE DATA
---------------------------------------
tiny near near
small near near
medium far near
large far FAR
相关问题
- 1. 声明存储过程
- 2. 过程声明错误
- 3. 当在TASM中声明段时,“para public use16”是什么意思?
- 4. 跳过声明
- 5. 通过LOCATION声明
- 6. 准备好声明与存储过程
- 7. MySQL存储过程:游标声明
- 8. MySQL存储过程声明问题
- 9. SQL Server存储过程声明变量
- 10. 在存储过程中声明变量
- 11. 存储过程中的Firebird CASE声明
- 12. 声明一个按钮过程
- 13. 存储过程如果/然后声明
- 14. 过程调用坏了 - 声明忽略
- 15. if else在存储过程中声明?
- 16. 通过声明SQL命令
- 17. PHP通过set_include_path声明
- 18. 如何通过声明
- 19. 索引通过声明
- 20. 通过声明的SQLite
- 21. 通过传入的声明
- 22. Endif声明不会经过
- 23. 退货声明被跳过
- 24. 如果声明被跳过,即使声明为真
- 25. 通过另一个声明的sqlalchemy关系(声明式)
- 26. Javascript img change声明过早过早
- 27. var声明期望声明
- 28. 是一个真正的声明式编程过程设计吗?
- 29. java程序声明失败
- 30. Excel编程 - 如果声明