⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exid.asm

📁 Dos6.0
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	jmp	MoveRec


subttl	Frame Store
page

MakeExe exIdEFStI2,opIdSt,ET_I2
	SkipExHeader
MakeExe exIdIFSt2,opIdSt,ET_Imp
	LODSWTX 			;Get oVar
	xchg	ax,bx			;Move to base register
	DbChk	oVar,bx 		; Check for valid oVar
	GetpFrame			;Get pointer into frame
	pop	[pFrame]
	DispMac

MakeExe exIdEFStI4,opIdSt,ET_I4
	SkipExHeader
MakeExe exIdIFSt4,opIdSt,ET_Imp
	LODSWTX 			;Get oVar
	xchg	ax,bx			;Move to base register
	DbChk	oVar,bx 		; Check for valid oVar
	GetpFrame			;Get pointer into frame
	pop	[pFrame]
	pop	[pFrame+2]
	DispMac


;Added with [18]
MakeExe exIdEFStR4,opIdSt,ET_R4
	SkipExHeader
MakeExe exIdIFStR4,opIdSt,ET_Imp
	LODSWTX 			;Get oVar
	xchg	ax,bx			;Move to base register
	DbChk	oVar,bx 		; Check for valid oVar
	GetpFrame			;Get pointer into frame
	fstp	dword ptr [pFrame]
	fwait
	DispMac

MakeExe exIdEFStR8,opIdSt,ET_R8
	SkipExHeader
MakeExe exIdIFStR8,opIdSt,ET_Imp 	
	LODSWTX 			;Get oVar
	xchg	ax,bx			;Move to base register
	DbChk	oVar,bx 		; Check for valid oVar
	GetpFrame			;Get pointer into frame
	fstp	qword ptr [pFrame]
	fwait
	DispMac
;End of [18]

MakeExe exIdEFStSD,opIdSt,ET_SD
	SkipExHeader
MakeExe exIdIFStSD,opIdSt,ET_Imp
	LODSWTX 			;Get oVar
	xchg	ax,bx			;Move to base register
	DbChk	oVar,bx 		; Check for valid oVar
	mov	ax,[pVarBx]		;Get oBP
	add	ax,bp			;ax = pSD
	push	ax			;Push pSD
	CALLRT	B$SASS,DispMov

MakeExe exIdIFStTyp,opIdSt,ET_Imp
	LODSWTX 			    ;Get oVar
	DbChk	oVar,ax 		    ; Check for valid oVar
	    add     ax,di		    ;oVar --> pVar
	xchg	bx,ax			    ;pVar to bx
	xchg	ax,di			    ;Save di in ax
	mov	di,[bx] 		    ;Get oBP
	add	di,bp
	mov	bx,[bx-VAR_value].VAR_oTyp  ;Get oTyp
	    push    ss
	jmp	MoveRec

subttl	Indirect Store

MakeExe exIdEIStI2,opIdSt,ET_I2
	SkipExHeader
MakeExe exIdIISt2,opIdSt,ET_Imp
	LODSWTX 			;Get oVar
	xchg	ax,bx			;Move to base register
	DbChk	oVar,bx 		; Check for valid oVar
	GetpFrame			;Get pointer into frame
	mov	bx,[pFrame] 		;Near address to bx
	pop	[bx]
	DispMac 			;Dispatch to next executor

MakeExe exIdEIStI4,opIdSt,ET_I4
	SkipExHeader
MakeExe exIdIISt4,opIdSt,ET_Imp
	LODSWTX 			;Get oVar
	xchg	ax,bx			;Move to base register
	DbChk	oVar,bx 		; Check for valid oVar
	GetpFrame			;Get pointer into frame
	mov	bx,[pFrame]		;Near address to bx
	pop	[bx]
	pop	[bx+2]
	DispMac 			;Dispatch to next executor


;Added with [18]
MakeExe exIdEIStR4,opIdSt,ET_R4
	SkipExHeader
MakeExe exIdIIStR4,opIdSt,ET_Imp
	LODSWTX 			;Get oVar
	xchg	ax,bx			;Move to base register
	DbChk	oVar,bx 		; Check for valid oVar
	GetpFrame			;Get pointer into frame
	mov	bx,[pFrame]		;Near address to bx
	fstp	dword ptr [bx]
	fwait
	DispMac 			;Dispatch to next executor


MakeExe exIdEIStR8,opIdSt,ET_R8
	SkipExHeader
MakeExe exIdIIStR8,opIdSt,ET_Imp 	
	LODSWTX 			;Get oVar
	xchg	ax,bx			;Move to base register
	DbChk	oVar,bx 		; Check for valid oVar
	GetpFrame			;Get pointer into frame
	mov	bx,[pFrame] 		;Near address to bx
	fstp	qword ptr [bx]
	fwait
	DispMac 			;Dispatch to next executor
;End of [18]

MakeExe exIdEIStSD,opIdSt,ET_SD
	SkipExHeader
MakeExe exIdIIStSD,opIdSt,ET_Imp
	LODSWTX 			;Get oVar
	xchg	ax,bx			;Move to base register
	DbChk	oVar,bx 		; Check for valid oVar
	GetpFrame			;Get pointer into frame
	push	[pFrame]		; Push pSD/handle
	CALLRT	B$SASS,DispMov

MakeExe exIdIIStTyp,opIdSt,ET_Imp
	LODSWTX 			;Get oVar
	DbChk	oVar,ax 		; Check for valid oVar
	    add     ax,di		;oVar --> pVar
	xchg	bx,ax			;pVar to bx
	    xchg    ax,di		;Save di in ax
	mov	di,[bx] 		;Get oBP
	mov	bx,[bx-VAR_value].VAR_oTyp ;Get oTyp
	    push    ds
	mov	di,[bp+di]		;Near address to di
	jmp	MoveRec

subttl	Public IdRf Executors
page

;Added with [15]

	;End of [15]

	subttl	Static IdRf Executors
	page

MakeExe exIdISRfTyp,opIdLd,ET_Imp
	LODSWTX 			;Get oVar
	DbChk	oVar,ax 		; Check for valid oVar
	add	ax,di			;oVar --> pVar
	push	ds			;Push far pointer
	push	ax
	DispMac

MakeExe exIdESRfR8,opIdLd,ET_R8
	SkipExHeader
MakeExe exIdESRfI4,opIdLd,ET_I4
	SkipExHeader
MakeExe exIdESRfSD,opIdLd,ET_SD
	SkipExHeader
MakeExe exIdESRfR4,opIdLd,ET_R4
	SkipExHeader
MakeExe exIdESRfI2,opIdLd,ET_I2
	SkipExHeader
MakeExe exIdISRf,opIdLd,ET_Imp
	LODSWTX 			;Get oVar
	DbChk	oVar,ax 		; Check for valid oVar
	    add     ax,di		;oVar --> pVar
	push	ax
	DispMac


SameExe exIdISLdSD,exIdISRf		
SameExe exIdESLdSD,exIdESRfSD



	subttl	Frame IdRf Executors
	page

MakeExe exIdIFRfTyp,opIdLd,ET_Imp
	LODSWTX 			;Get oVar
	DbChk	oVar,ax 		; Check for valid oVar
	xchg	bx,ax			;Move to base register
	mov	ax,[pVarBx]		;Get oFrame
	add	ax,bp			;oFrame to pValue
	push	ds
	push	ax
	DispMac

MakeExe exIdEFRfR8,opIdLd,ET_R8
	SkipExHeader
MakeExe exIdEFRfSD,opIdLd,ET_SD
	SkipExHeader
MakeExe exIdEFRfI4,opIdLd,ET_I4
	SkipExHeader
MakeExe exIdEFRfR4,opIdLd,ET_R4
	SkipExHeader
MakeExe exIdEFRfI2,opIdLd,ET_I2
	SkipExHeader
MakeExe exIdIFRf,opIdLd,ET_Imp
	LODSWTX 			;Get oVar
	DbChk	oVar,ax 		; Check for valid oVar
	xchg	bx,ax			;Move to base register
	mov	ax,[pVarBx]		;Get oFrame
	add	ax,bp			;oFrame to pValue
	push	ax
	DispMac


SameExe exIdIFLdSD,exIdIFRf		


	subttl	Common IdRf Executors
	page


MakeExe exIdICRfTyp,opIdLd,ET_Imp
	LODSWTX					;Get oVar
	DbChk	oVar,ax 			; Check for valid oVar
	xchg	bx,ax
	mov	ax,[pVarBx].COMREF_oValue	;Offset into common block
	mov	bx,[pVarBx].COMREF_oCommon	;oCommon
	add	bx,[grs.GRS_bdtComBlk.BD_pb]	;pCommon
	mov	bx,[bx].COM_bdValue.BD_pb	;Common block
	add	bx,ax				;Offset in block
	push	ds
	push	bx
	DispMac


MakeExe exIdECRfR8,opIdLd,ET_R8
	SkipExHeader
MakeExe exIdECRfSD,opIdLd,ET_SD
	SkipExHeader
MakeExe exIdECRfI4,opIdLd,ET_I4
	SkipExHeader
MakeExe exIdECRfR4,opIdLd,ET_R4
	SkipExHeader
MakeExe exIdECRfI2,opIdLd,ET_I2
	SkipExHeader
MakeExe exIdICRf,opIdLd,ET_Imp
	LODSWTX					;Get oVar
	DbChk	oVar,ax 			; Check for valid oVar
	xchg	bx,ax
	mov	ax,[pVarBx].COMREF_oValue	;Offset into common block
	mov	bx,[pVarBx].COMREF_oCommon	;oCommon
	add	bx,[grs.GRS_bdtComBlk.BD_pb]	;pCommon
	mov	bx,[bx].COM_bdValue.BD_pb	;Common block
	add	bx,ax				;Offset in block
	push	bx
	DispMac



SameExe exIdICLdSD,exIdICRf		
SameExe exIdECLdSD,exIdECRfSD



	subttl	FS load/store/ref executors
	page


MakeExe exIdESRfFS,opIdLd,ET_SD
	SkipExHeader
MakeExe exIdISRfFS,opIdLd,ET_Imp
	LODSWTX					;Get oVar
	DbChk	oVar,ax 			; Check for valid oVar
	    add     ax,di			;oVar --> pVar
	xchg	bx,ax				;pVar to bx
	    push    ds
	push	bx				;Far address to stack
	push	[bx-VAR_value].VAR_cbFixed	; Push length of FS
	DispMac

MakeExe exIdEIRfFS,opIdLd,ET_SD
	SkipExHeader
MakeExe exIdIIRfFS,opIdLd,ET_Imp
	LODSWTX					;Get oVar
	xchg	ax,bx				;Move to base register
	DbChk	oVar,bx 			; Check for valid oVar
	mov	ax,[pVarBx-VAR_value].VAR_cbFixed   ; Get length
	GetpFrame				;Get pointer into frame
	push	ds
	push	[pFrame]		;Push offset
	push	ax			;Push cb in FS
	DispMac

MakeExe exIdEFRfFS,opIdLd,ET_SD
	SkipExHeader
MakeExe exIdIFRfFS,opIdLd,ET_Imp
	LODSWTX					;Get oVar
	DbChk	oVar,ax 			; Check for valid oVar
	xchg	bx,ax				;Move to base register
	mov	ax,[pVarBx-VAR_value].VAR_cbFixed   ; Get length
	mov	bx,[pVarBx]			;Get oFrame
	add	bx,bp				;oFrame to pFrame entry
	    push    ss
	push	bx
	push	ax				;Push cb in FS
	DispMac


MakeExe exIdESLdFS,opIdLd,ET_SD
	SkipExHeader
MakeExe exIdISLdFS,opIdLd,ET_Imp
	LODSWTX					;Get oVar
	DbChk	oVar,ax 			; Check for valid oVar
	    add     ax,di			;oVar --> pVar
	xchg	bx,ax				;pVar to bx
	    push    ds
	push	bx				;Far address to stack
	push	[bx-VAR_value].VAR_cbFixed	; Push length of FS
	CALLRT	B$LDFS,DispMovSd

MakeExe exIdEILdFS,opIdLd,ET_SD
	SkipExHeader
MakeExe exIdIILdFS,opIdLd,ET_Imp
	LODSWTX					;Get oVar
	DbChk	oVar,ax 			; Check for valid oVar
	xchg	bx,ax				;Move to base register
	mov	ax,[pVarBx-VAR_value].VAR_cbFixed   ; Get length
	GetpFrame			;Get pointer into frame
	push	ds
	push	[pFrame]			;Push offset
	push	ax				;Push cb in FS
	CALLRT	B$LDFS,DispMovSd

MakeExe exIdEFLdFS,opIdLd,ET_SD
	SkipExHeader
MakeExe exIdIFLdFS,opIdLd,ET_Imp
	LODSWTX					;Get oVar
	DbChk	oVar,ax 			; Check for valid oVar
	xchg	bx,ax				;Move to base register
	mov	ax,[pVarBx-VAR_value].VAR_cbFixed   ; Get length
	mov	bx,[pVarBx]			;Get oFrame
	add	bx,bp				;oFrame to pFrame entry
	push	ss
	push	bx
	push	ax				;Push cb in FS
	CALLRT	B$LDFS,DispMovSd



MakeExe exIdESStFS,opIdSt,ET_SD
	SkipExHeader
MakeExe exIdISStFS,opIdSt,ET_Imp
	LODSWTX					;Get oVar
	DbChk	oVar,ax 			; Check for valid oVar
	    add     ax,di			;oVar --> pVar
	xchg	bx,ax				;pVar to bx
	    push    ds
	push	bx				;Far address to stack
	push	[bx-VAR_value].VAR_cbFixed	; Push length of FS
	CALLRT	B$LSET,Disp

MakeExe exIdEIStFS,opIdSt,ET_SD
	SkipExHeader
MakeExe exIdIIStFS,opIdSt,ET_Imp
	LODSWTX					;Get oVar
	DbChk	oVar,ax 			; Check for valid oVar
	xchg	bx,ax				;Move to base register
	mov	ax,[pVarBx-VAR_value].VAR_cbFixed   ; Get length
	GetpFrame				;Get pointer into frame
	push	ds
	push	[pFrame]			;Push offset
	push	ax				;Push cb in FS
	CALLRT	B$LSET,Disp

MakeExe exIdEFStFS,opIdSt,ET_SD
	SkipExHeader
MakeExe exIdIFStFS,opIdSt,ET_Imp
	LODSWTX					;Get oVar
	DbChk	oVar,ax 			; Check for valid oVar
	xchg	bx,ax				;Move to base register
	mov	ax,[pVarBx-VAR_value].VAR_cbFixed   ; Get length
	mov	bx,[pVarBx]			;Get oFrame
	add	bx,bp				;oFrame to pFrame entry
	push	ss
	push	bx
	push	ax				;Push cb in FS
	CALLRT	B$LSET,Disp


MakeExe exIdICRfFS,opIdLd,ET_Imp
	SkipExHeader
MakeExe exIdECRfFS,opIdLd,ET_SD
	LODSWTX					;Get oVar
	DbChk	oVar,ax 			; Check for valid oVar
	xchg	bx,ax
	mov	ax,[pVarBx-VAR_value].VAR_cbFixed   ; Get length
	mov	cx,[pVarBx].COMREF_oValue	;Offset into common block
	mov	bx,[pVarBx].COMREF_oCommon	;oCommon
	add	bx,[grs.GRS_bdtComBlk.BD_pb]	;pCommon
	mov	bx,[bx].COM_bdValue.BD_pb	;Common block
	add	bx,cx				;Offset in block
	push	ds
	push	bx
	push	ax			;Push cb in FS
	DispMac


MakeExe exIdICLdFS,opIdLd,ET_Imp
	SkipExHeader
MakeExe exIdECLdFS,opIdLd,ET_SD
	LODSWTX					;Get oVar
	DbChk	oVar,ax 			; Check for valid oVar
	xchg	bx,ax
	mov	ax,[pVarBx-VAR_value].VAR_cbFixed   ; Get length
	mov	cx,[pVarBx].COMREF_oValue	;Offset into common block
	mov	bx,[pVarBx].COMREF_oCommon	;oCommon
	add	bx,[grs.GRS_bdtComBlk.BD_pb]	;pCommon
	mov	bx,[bx].COM_bdValue.BD_pb	;Common block
	add	bx,cx				;Offset in block
	push	ds
	push	bx
	push	ax			;Push cb in FS
	CALLRT	B$LDFS,DispMovSd


MakeExe exIdICStFS,opIdSt,ET_Imp
	SkipExHeader
MakeExe exIdECStFS,opIdSt,ET_SD
	LODSWTX					;Get oVar
	DbChk	oVar,ax 			; Check for valid oVar
	xchg	bx,ax
	mov	ax,[pVarBx-VAR_value].VAR_cbFixed   ; Get length
	mov	cx,[pVarBx].COMREF_oValue	;Offset into common block
	mov	bx,[pVarBx].COMREF_oCommon	;oCommon
	add	bx,[grs.GRS_bdtComBlk.BD_pb]	;pCommon
	mov	bx,[bx].COM_bdValue.BD_pb	;Common block
	add	bx,cx				;Offset in block
	push	ds
	push	bx
	push	ax				;Push cb in FS
	CALLRT	B$LSET,Disp




SameExe	exIdIIRf,exIdIFLd2
SameExe	exIdEIRfI2,exIdEFLdI2

;*************************************************************************

MakeExe exStDim,opStDim
	inc	si
	inc	si			;Eat the operand
	DispMac

sEnd	CODE
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -