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

📄 asm.inc

📁 DOS下的调试工具
💻 INC
📖 第 1 页 / 共 3 页
字号:

		db	3
		dw	cpop
		dw	_sreg
		db	7, 0
		dw	_reg16
		db	58h,0
		dw	_rm
		db	08Fh, 6

		db	1
		dw	clea
		dw	_r_m16
		db	8Dh, 0

		db	1
		dw	cles
		dw	_r_m16
		db	0C4h, 0

		db	1
		dw	clds
		dw	_r_m16
		db	0C5h, 0

		db	2
		dw	cinc
		dw	_reg16
		db	40h,0
		dw	_rm
		db	0FEh, 0

		db	2
		dw	cdec
		dw	_reg16
		db	48h,0
		dw	_rm
		db	0FEh, 1

		db	1
		dw	cmul
		dw	_rm
		db	0F6h, 100b

		db	1
		dw	cimul
		dw	_rm
		db	0F6h, 101b

		db	1
		dw	cdiv
		dw	_rm
		db	0F6h, 110b

		db	1
		dw	cidiv
		dw	_rm
		db	0F6h, 111b

		db	1
		dw	cneg
		dw	_rm
		db	0F6h, 011b

		db	1
		dw	cnot
		dw	_rm
		db	0F6h, 010b

		db	2
		dw	cxchg
		dw	_a_reg
		db	90h, 0
		dw	_r_rm
		db	86h, 0

		db	1
		dw	cesc
		dw	_esc
		db	0D8h, 0

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

		db	1
		dw	cdb
		dw	_db
		db	0, 0

		db	1
		dw	cdw
		dw	_dw
		db	0, 0

		db	2
		dw	caam
		dw	_im8
		db	0D4h, 0
		dw	_imn
		db	0D4h, 0Ah

		db	2
		dw	caad
		dw	_im8
		db	0D5h, 0
		dw	_imn
		db	0D5h, 0Ah

		db	1
		dw	cdaa
		dw	_noparam
		db	27h,0

		db	1
		dw	cdas
		dw	_noparam
		db	2Fh,0

		db	1
		dw	caaa
		dw	_noparam
		db	37h,0

		db	1
		dw	caas
		dw	_noparam
		db	3Fh,0

		db	1
		dw	cnop
		dw	_noparam
		db	90h,0

		db	1
		dw	ccbw
		dw	_noparam
		db	98h,0

		db	1
		dw	ccwd
		dw	_noparam
		db	99h,0

		db	1
		dw	cwait
		dw	_noparam
		db	9Bh,0

		db	1
		dw	cpushf
		dw	_noparam
		db	9Ch,0

		db	1
		dw	cpopf
		dw	_noparam
		db	9Dh,0

		db	1
		dw	csahf
		dw	_noparam
		db	9Eh,0

		db	1
		dw	clahf
		dw	_noparam
		db	9Fh,0

		db	1
		dw	cmovsb
		dw	_noparam
		db	0A4h,-1

		db	1
		dw	cmovsw
		dw	_noparam
		db	0A5h,-1

		db	1
		dw	ccmpsb
		dw	_noparam
		db	0A6h,-1

		db	1
		dw	ccmpsw
		dw	_noparam
		db	0A7h,-1

		db	1
		dw	cstosb
		dw	_noparam
		db	0AAh,-1

		db	1
		dw	cstosw
		dw	_noparam
		db	0ABh,-1

		db	1
		dw	clodsb
		dw	_noparam
		db	0ACh,-1

		db	1
		dw	clodsw
		dw	_noparam
		db	0ADh,-1

		db	1
		dw	cscasb
		dw	_noparam
		db	0AEh,-1

		db	1
		dw	cscasw
		dw	_noparam
		db	0AFh,-1

		db	2
		dw	cret
		dw	_im16
		db	0C2h, 0
		dw	_noparam
		db	0C3h,0

		db	2
		dw	cretn
		dw	_im16
		db	0C2h, 0
		dw	_noparam
		db	0C3h,0

		db	2
		dw	cretf
		dw	_im16
		db	0CAh, 0
		dw	_noparam
		db	0CBh,0

		db	1
		dw	cint3
		dw	_noparam
		db	0CCh,0

		db	1
		dw	cint
		dw	_im8ch3
		db	0CDh, 0

		db	1
		dw	cinto
		dw	_noparam
		db	0CEh,0

		db	1
		dw	ciret
		dw	_noparam
		db	0CFh,0

		db	1
		dw	cxlat
		dw	_noparam
		db	0D7h,0

		db	1
		dw	plock
		dw	_noparam
		db	0F0h,0

		db	1
		dw	chlt
		dw	_noparam
		db	0F4h,0

		db	1
		dw	ccmc
		dw	_noparam
		db	0F5h,0

		db	1
		dw	cclc
		dw	_noparam
		db	0F8h,0

		db	1
		dw	cstc
		dw	_noparam
		db	0F9h,0

		db	1
		dw	ccli
		dw	_noparam
		db	0FAh,0

		db	1
		dw	csti
		dw	_noparam
		db	0FBh,0

		db	1
		dw	ccld
		dw	_noparam
		db	0FCh,0

		db	1
		dw	cstd
		dw	_noparam
		db	0FDh,0

diff_types:
		db	1
		dw	cshl
		dw	_rm_cl_1
		db	0D0h, 100b

		db	1
		dw	csal
		dw	_rm_cl_1
		db	0D0h, 100b

		db	1
		dw	cshr
		dw	_rm_cl_1
		db	0D0h, 101b

		db	1
		dw	csar
		dw	_rm_cl_1
		db	0D0h, 111b

		db	1
		dw	crol
		dw	_rm_cl_1
		db	0D0h, 000b

		db	1
		dw	cror
		dw	_rm_cl_1
		db	0D0h, 001b

		db	1
		dw	crcl
		dw	_rm_cl_1
		db	0D0h, 010b

		db	1
		dw	crcr
		dw	_rm_cl_1
		db	0D0h, 011b


		db	2
		dw	cin
		dw	_a_dx
		db	0ECh, 0
		dw	_a_im8
		db	0E4h, 0

		db	2
		dw	cout
		dw	_dx_a
		db	0EEh, 0
		dw	_im8_a
		db	0E6h, 0

jumps_and_calls:
		db	4
		dw	cjmp
		dw	_short
		db	0EBh, 0
		dw	_near
		db	0E9h, 0
		dw	_far
		db	0EAh, 0
		dw	_rmj
		db	0FFh, 100b

		db	3
		dw	ccall
		dw	_near
		db	0E8h, 0
		dw	_far
		db	9Ah, 0
		dw	_rmj
		db	0FFh, 010b

		db	1
		dw	cjo
		dw	_short
		db	070h, 0

		db	1
		dw	cjno
		dw	_short
		db	071h, 0

		db	1
		dw	cjb
		dw	_short
		db	072h, 0

		db	1
		dw	cjc
		dw	_short
		db	072h, 0

		db	1
		dw	cjnae
		dw	_short
		db	072h, 0

		db	1
		dw	cjnb
		dw	_short
		db	073h, 0

		db	1
		dw	cjnc
		dw	_short
		db	073h, 0

		db	1
		dw	cjae
		dw	_short
		db	073h, 0

		db	1
		dw	cje
		dw	_short
		db	074h, 0

		db	1
		dw	cjz
		dw	_short
		db	074h, 0


		db	1
		dw	cjne
		dw	_short
		db	075h, 0

		db	1
		dw	cjnz
		dw	_short
		db	075h, 0

		db	1
		dw	cjbe
		dw	_short
		db	076h, 0

		db	1
		dw	cjna
		dw	_short
		db	076h, 0

		db	1
		dw	cjnbe
		dw	_short
		db	077h, 0

		db	1
		dw	cja
		dw	_short
		db	077h, 0


		db	1
		dw	cjs
		dw	_short
		db	078h, 0

		db	1
		dw	cjns
		dw	_short
		db	079h, 0

		db	1
		dw	cjp
		dw	_short
		db	07Ah, 0

		db	1
		dw	cjpe
		dw	_short
		db	07Ah, 0

		db	1
		dw	cjnp
		dw	_short
		db	07Bh, 0

		db	1
		dw	cjpo
		dw	_short
		db	07Bh, 0

		db	1
		dw	cjl
		dw	_short
		db	07Ch, 0

		db	1
		dw	cjnge
		dw	_short
		db	07Ch, 0

		db	1
		dw	cjnl
		dw	_short
		db	07Dh, 0

		db	1
		dw	cjge
		dw	_short
		db	07Dh, 0

		db	1
		dw	cjle
		dw	_short
		db	07Eh, 0

		db	1
		dw	cjng
		dw	_short
		db	07Eh, 0

		db	1
		dw	cjnle
		dw	_short
		db	07Fh, 0

		db	1
		dw	cjg
		dw	_short
		db	07Fh, 0

		db	1
		dw	cloop
		dw	_short
		db	0E2h, 0

		db	1
		dw	cloopne
		dw	_short
		db	0E0h, 0

		db	1
		dw	cloopnz
		dw	_short
		db	0E0h, 0

		db	1
		dw	cloope
		dw	_short
		db	0E1h, 0

		db	1
		dw	cloopz
		dw	_short
		db	0E1h, 0

		db	1
		dw	cjcxz
		dw	_short
		db	0E3h, 0

rep_prefixes:
		db	1
		dw	crep
		dw	0
		db	0F3h, 0

		db	1
		dw	crepe
		dw	0
		db	0F3h, 0

		db	1
		dw	crepz
		dw	0
		db	0F3h, 0

		db	1
		dw	crepne
		dw	0
		db	0F2h, 0

		db	1
		dw	crepnz
		dw	0
		db	0F2h, 0

;~comment #
;~Asm286table	;~label	byte
;~		db	1
;~		dw	cpusha
;~		dw	_noparam
;~		db	60h, 0
;~
;~		db	1
;~		dw	cpopa
;~		dw	_noparam
;~		db	61h, 0
;~
;~		db	1
;~		dw	cbound
;~		dw	_r_m16
;~		db	62h, 0
;~
;~		db	1
;~		dw	carpl
;~		dw	_rm_r16
;~#
		db	0		; End of table


;=============================================================================
; _r_m16
;-----------------------------------------------------------------------------
_r_m16:
		cmp	bx,0100h
		jne	@@quit
		cmp	cl,-1
		je	@@quit
		test	cl,1000b
		jz	@@quit
		mov	byte [lxx_flag],1
		jmp	_r_rm2
@@quit:
		or	sp,sp
		ret
;=============================================================================
; _r_rm
;-----------------------------------------------------------------------------
_r_rm:
		mov	byte [lxx_flag],0
_r_rm2:
		cmp	byte [param_count],2
		jne	..@_r_rm_q		;jump out of range
		cmp	bx,0001h
		je	..@_r_rm_m_r
		cmp	bx,0100h
		je	..@_r_rm_r_m
		or	bx,bx
		jne	..@_r_rm_q
@@r_r:
		cmp	cl,-1
		je	..@_r_rm_q
		cmp	ch,-1
		je	..@_r_rm_q
		mov	byte [di],2
		cmp	byte [lxx_flag],1
		je	@@l1
		call	add_word_flag
@@l1:
		mov	[di+1],al
		call	make_modrm
;;		mov	al,cl
;		and	al,0111b
;		or	al,11000000b
		and	ch,0111b
		shl	ch,1
		shl	ch,1
		shl	ch,1
		or	al,ch
		mov	[di+2],al
		jmp	..@_r_rm_ok

..@_r_rm_q:
exit_zf_clear:
		or	sp,sp
		ret
..@_r_rm_ok:
		cmp	ax,ax
		ret

..@_r_rm_m_r:
		cmp	ch,-1
		je	..@_r_rm_q
@@make_modrm:
		cmp	byte [lxx_flag],1
		je	@@l2
		call	add_word_flag
@@l2:
		mov	[di+1],al

		call	make_modrm

		mov	dx,[parameter_1+AP_VALUE]
		add	ah,2
		mov	[di],ah
@@set_reg:
		mov	[di+3],dx
		mov	ah,[parameter_2+AP_REG_NUMBER]
		and	ah,0111b
		shl	ah,1
		shl	ah,1
		shl	ah,1
		or	al,ah
		mov	[di+2],al
		jmp	..@_r_rm_ok

..@_r_rm_r_m:
		cmp	cl,-1
		je	..@_r_rm_q
		cmp	byte [lxx_flag],1
		je	@@7
		or	al,2
@@7:
		call	swap_parameters
		xchg	cl,ch
		jmp	@@make_modrm
;=============================================================================
; _a_im
;-----------------------------------------------------------------------------
_a_im:
		cmp	byte [param_count],2
		jne	@@quit
		cmp	cl,0ffh
		je	exit_zf_clear
		and	cl,0111b
		cmp	cl,regAL
		jne	@@quit
		cmp	bh,0
		jne	@@quit
		call	add_word_flag
		mov	dx,[parameter_2+AP_VALUE]
		or	ah,ah
		jnz	@@1
		call	check_byte
		jz	@@1
		or	dh,dh
		jnz	jump_to_big_num_error		;jump out of range
@@1:
		add	ah,2
		mov	[di],ah
		mov	[di+1],al
		mov	[di+2],dx
		cmp	ax,ax
@@quit:
		ret
;=============================================================================
; _rm_im1
;-----------------------------------------------------------------------------
_rm_im1:
		mov	byte [mov_flag],1
		jmp	_rm_im2
;=============================================================================
; _db
;-----------------------------------------------------------------------------
_db:
		cmp	byte [param_count],1
		jne	@@quit
		or	bl,bl
		jnz	@@quit
		cmp	cl,-1
		jne	@@quit
		mov	ax,[parameter_1+AP_VALUE]
		or	ah,ah
		jnz	jump_to_big_num_error		;jump out of range
		mov	byte [di],1
		mov	[di+1],al
@@quit:
		ret
;=============================================================================
; _rm_im
;-----------------------------------------------------------------------------
_rm_im:
		mov	byte [mov_flag],0
_rm_im2:
		cmp	byte [param_count],2
		jne	@@quit
		cmp	ch,0ffh
		jne	@@quit
		cmp	bx,0001h
		je	@@m_i
		or	bx,bx
		jnz	@@quit

⌨️ 快捷键说明

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