`
lobin
  • 浏览: 162829 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

汇编:MASM中的“langtype” 参数(整理)

 
阅读更多

MASM中调用和命名规范(calling and naming convention)

?

在MASM中很多地方都有个“langtype” 的参数设定,用于指定调用和命名规范(calling and naming convention),这个东西不只是在MASM中有,在其他任何语言中其实都有这个,如C,C++,JAVA等。

?

下面是MASM中一些需要设定“langtype” 的参数的地方:

?

label PROC [[distance]] [[langtype]] [[visibility]] [[<prologuearg>]] [[USES reglist]] [[, parameter [[:tag]]]] ...

[[FRAME [[:ehandler-address]] ]]

statements

label ENDP

?

EXTERN [[langtype]] name [[ (altid) ]] : type [[, [[langtype]] name [[ (altid) ]] : type]] ...

?

EXTRN

?

EXTERNDEF [[langtype]] name:type [[, [[langtype]] name:type]]...

?

label PROTO [distance] [langtype] [, [parameter]:tag] ...

?

PUBLIC [[langtype]] name [[, [[langtype]] name]]...

?

MASM中调用和命名规范的支持:

32-bit FLAT model: C, STDCALL

16-bit models: C, BASIC, FORTRAN, PASCAL, SYSCALL, STDCALL

?

MASM中“langtype” 的参数的设定细节其实挺多的,设置的不一样, 反映的结果也不一样,另外,有些地方,不同的地方设置的一样,反映的结果也不一样,而且设定很灵活。

?

PROTO声明的例子:

_DATA SEGMENT
	MESSAGE2 DB 'Hello, This is MASM!', 0DH, 0AH, '$'
_DATA ENDS

_PROC SEGMENT
	ASSUME CS:_PROC, DS:_DATA

_TEST_PRINTF PROC FAR
	PUSH BP
	MOV BP, SP

	MOV AX, _DATA
	MOV DS, AX

	MOV DX, OFFSET MESSAGE2
	MOV AH, 9
	INT 21H

	POP	BP
	RET
_TEST_PRINTF ENDP

_PROC ENDS
	END

?

	; IF PARAM langtype NOT SPECIFIED, DEFAULT "BASIC", THEN THE DEFINITION OF _TEST_PRINTF: 
	; 
	; _TEST_PRINTF PROC FAR
	;	... ...
	;	... ...
	; _TEST_PRINTF ENDP
	_TEST_PRINTF PROTO FAR

_DATA SEGMENT
	MESSAGE1 DB 'Hello, MASM!', 0DH, 0AH, '$'
_DATA ENDS

_TEXT SEGMENT 
	ASSUME CS:_TEXT, DS:_DATA
START:
	MOV AX, _DATA
	MOV DS, AX

	MOV DX, OFFSET MESSAGE1
	MOV AH, 9
	INT 21H

	
	CALL _TEST_PRINTF

	MOV AH,4CH
	INT 21H
_TEXT ENDS
	END START

?

?

?

?

?

?

?

1
0
分享到:
评论
Global site tag (gtag.js) - Google Analytics 重庆时时彩怎么作弊的