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

📄 devcall.asm

📁 清华紫光 4a,4b,4c扫描仪的DOS下的驱动及开发范例
💻 ASM
字号:
		.MODEL LARGE,C
		.286
		.DATA
	TRUE            equ     1
	FALSE           equ     -1
	DriveName       db      'A4SPI$  ', 0
	sOpenFlag       db      0
	DriveHandle     dw      0
	Ioctl_cmd       dd      0
		.CODE
PUBLIC  SCNOpen,SCNCall,SCNClose
SCNOpen PROC    FAR USES ax bx cx dx si  di ds es
		mov     ax,@data
		mov     ds,ax
		mov     ax, TRUE
		cmp     sOpenFlag, 0
		jne     s_exit
		mov     sOpenFlag, 1
		lea     dx, DriveName
		mov     ax, 3d02h
		int     21h                     ;execute open a file
		jc      s_fail
		mov     DriveHandle, ax
		mov     ax, TRUE
		jmp     s_exit
s_fail: mov     ax, FALSE
s_exit: ret
SCNOpen endp
;
SCNCall PROC    FAR USES ax bx cx dx si di ds es, parm:far PTR DWORD
		mov     ax,@data
		mov     ds,ax
		lea     bx,Ioctl_cmd            ;0
		mov     dx,bx                   ;to be used by dos
		les     ax,parm
		mov     word ptr [bx],ax
		mov     word ptr [bx+2],es
		mov     bx, DriveHandle    ;0
		mov     cx, 4
		mov     ax, 4403h           ;execute ioctl for devices
		int     21h
		ret
SCNCall endp
;
SCNClose PROC   FAR USES ax bx cx dx si  di ds es
		mov     ax,@data
		mov     ds,ax
		cmp     sOpenFlag, 0
		je      noclose
		mov     sOpenFlag, 0
		mov     bx, DriveHandle
		or      bx, bx
		jz      noclose
		mov     ah, 3eh
		int     21h
noclose:ret
SCNClose endp
	END

⌨️ 快捷键说明

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