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

📄 stprin~1.asm

📁 该程序用来测试89C51与IDE硬盘的接口
💻 ASM
📖 第 1 页 / 共 3 页
字号:
@54:
	push      0
	call      @biosprint
	mov       ebx,eax
	test      ebx,ebx
	je        short @55
	mov       eax,ebx
	jmp       @24
@55:
	push      27
	call      @biosprint
	mov       ebx,eax
	test      ebx,ebx
	je        short @56
	mov       eax,ebx
	jmp       @24
@56:
	push      82
	call      @biosprint
	mov       ebx,eax
	test      ebx,ebx
	je        short @57
	mov       eax,ebx
	jmp       short @24
@57:
	push      0
	call      @biosprint
	mov       ebx,eax
	test      ebx,ebx
	je        short @58
	mov       eax,ebx
	jmp       short @24
@58:
	push      27
	call      @biosprint
	mov       ebx,eax
	test      ebx,ebx
	je        short @59
	mov       eax,ebx
	jmp       short @24
@59:
	push      85
	call      @biosprint
	mov       ebx,eax
	test      ebx,ebx
	je        short @60
	mov       eax,ebx
	jmp       short @24
@60:
	push      0
	call      @biosprint
	mov       ebx,eax
	test      ebx,ebx
	je        short @61
	mov       eax,ebx
	jmp       short @24
@61:
	push      27
	call      @biosprint
	mov       ebx,eax
	test      ebx,ebx
	je        short @62
	mov       eax,ebx
	jmp       short @24
@62:
	push      53
	call      @biosprint
	mov       ebx,eax
	test      ebx,ebx
	je        short @63
	mov       eax,ebx
	jmp       short @24
@63:
	push      0
	call      @biosprint
	mov       ebx,eax
	mov       eax,ebx
@64:
@24:
	pop       edi
	pop       esi
	pop       ebx
	ret 
@InitPrinter	endp
InitPrinter	ends
_TEXT	ends
_TEXT	segment dword public use32 'CODE'
Set_Page_Size	segment virtual
	align	2
@Set_Page_Size	proc	near
?live16391@0:
@65:
	push      ebp
	mov       ebp,esp
	push      ebx
	mov       ebx,dword ptr [ebp+8]
?live16391@16: ; EBX = _pagesize
	push      27
	call      @biosprint
	test      eax,eax
	jne       short @67
	push      64
	call      @biosprint
	test      eax,eax
	jne       short @67
	push      27
	call      @biosprint
	test      eax,eax
	jne       short @67
	push      67
	call      @biosprint
	test      eax,eax
	jne       short @67
	cmp       ebx,30
	jge       short @71
	push      0
	call      @biosprint
	test      eax,eax
	jne       short @67
@71:
	push      ebx
	call      @biosprint
?live16391@128: ; 
@73:
@67:
	pop       ebx
	pop       ebp
	ret       4
@Set_Page_Size	endp
Set_Page_Size	ends
_TEXT	ends
_TEXT	segment dword public use32 'CODE'
IsPrnStatusOk	segment virtual
	align	2
@IsPrnStatusOk	proc	near
?live16392@0:
@74:
	push      ebx
	push      esi
	call      @GetTickCount
	mov       esi,eax
?live16392@32: ; ESI = BeginTimeMillis
@75:
	mov       ax,word ptr [_IoPortBase]
	inc       eax
	push      eax
	call      @@_inp$qus
	pop       ecx
?live16392@48: ; EAX = statue, ESI = BeginTimeMillis
	cmp       eax,127
	jne       short @76
?live16392@64: ; ESI = BeginTimeMillis
	mov       ebx,-10006
	jmp       short @77
?live16392@80: ; EAX = statue, ESI = BeginTimeMillis
@76:
	test      al,-128
	jne       short @78
?live16392@96: ; ESI = BeginTimeMillis
	mov       ebx,1
	jmp       short @77
?live16392@112: ; EAX = statue, ESI = BeginTimeMillis
@78:
	test      al,64
	jne       short @79
?live16392@128: ; ESI = BeginTimeMillis
	mov       ebx,-10001
	jmp       short @77
?live16392@144: ; EAX = statue, ESI = BeginTimeMillis
@79:
	mov       edx,eax
	and       edx,32
	dec       edx
	jne       short @80
?live16392@160: ; ESI = BeginTimeMillis
	mov       ebx,-10004
	jmp       short @77
?live16392@176: ; EAX = statue, ESI = BeginTimeMillis
@80:
	test      al,16
	jne       short @81
?live16392@192: ; ESI = BeginTimeMillis
	mov       ebx,-10005
	jmp       short @77
?live16392@208: ; EAX = statue, ESI = BeginTimeMillis
@81:
	test      al,8
	jne       short @82
?live16392@224: ; ESI = BeginTimeMillis
	mov       ebx,-10002
	jmp       short @77
@82:
	xor       ebx,ebx
?live16392@256: ; EBX = condition, ESI = BeginTimeMillis
@77:
	call      @GetTickCount
	sub       eax,esi
	cmp       eax,50
	jae       short @83
	cmp       ebx,1
	je        short @75
?live16392@272: ; EBX = condition
@83:
	cmp       ebx,1
	jne       short @84
?live16392@288: ; 
	mov       ebx,-10003
?live16392@304: ; EBX = condition
@84:
	mov       eax,ebx
?live16392@320: ; 
@86:
@85:
	pop       esi
	pop       ebx
	ret 
@IsPrnStatusOk	endp
IsPrnStatusOk	ends
_TEXT	ends
_TEXT	segment dword public use32 'CODE'
Print_Str_Wide	segment virtual
	align	2
@Print_Str_Wide	proc	near
?live16393@0:
@87:
	push      ebp
	mov       ebp,esp
	push      ebx
	push      27
	call      @biosprint
	test      eax,eax
	jne       short @89
	push      14
	call      @biosprint
	test      eax,eax
	jne       short @89
	mov       eax,dword ptr [ebp+8]
	mov       ebx,eax
	jmp       short @92
?live16393@64: ; EBX = @temp1, EAX = @temp2
@91:
	movsx     eax,al
	push      eax
	call      @biosprint
	test      eax,eax
	jne       short @89
	inc       ebx
@92:
	mov       al,byte ptr [ebx]
	test      al,al
	setne     dl
	and       edx,1
	test      dl,dl
	jne       short @91
?live16393@80: ; 
	push      27
	call      @biosprint
	test      eax,eax
	jne       short @89
	push      20
	call      @biosprint
	test      eax,eax
	jne       short @89
@97:
@89:
	pop       ebx
	pop       ebp
	ret       4
@Print_Str_Wide	endp
Print_Str_Wide	ends
_TEXT	ends
_TEXT	segment dword public use32 'CODE'
Print_Str	segment virtual
	align	2
@Print_Str	proc	near
?live16394@0:
@98:
	push      ebp
	mov       ebp,esp
	push      ebx
?live16394@16: ; EAX = ret
	mov       edx,dword ptr [ebp+8]
	mov       ebx,edx
	jmp       short @100
?live16394@32: ; EBX = @temp0, EDX = @temp2
@99:
	movsx     eax,dl
	push      eax
	call      @biosprint
	test      eax,eax
	jne       short @102
	inc       ebx
@100:
	mov       dl,byte ptr [ebx]
	test      dl,dl
	setne     cl
	and       ecx,1
	test      cl,cl
	jne       short @99
?live16394@48: ; 
@104:
@102:
	pop       ebx
	pop       ebp
	ret       4
@Print_Str	endp
Print_Str	ends
_TEXT	ends
_TEXT	segment dword public use32 'CODE'
Feed_Paper	segment virtual
	align	2
@Feed_Paper	proc	near
?live16395@0:
@105:
	push      ebp
	mov       ebp,esp
	push      ebx
	push      esi
	mov       esi,dword ptr [ebp+8]
?live16395@16: ; ESI = _feedline
@106:
	xor       ebx,ebx
	jmp       short @108
?live16395@32: ; EBX = i, ESI = _feedline
@107:
	push      27
	call      @biosprint
	test      eax,eax
	jne       short @110
	test      esi,esi
	jle       short @111
	push      74
	call      @biosprint
	test      eax,eax
	je        short @113
	jmp       short @110
@111:
	push      106
	call      @biosprint
	test      eax,eax
	jne       short @110
@113:
	push      30
	call      @biosprint
	test      eax,eax
	jne       short @110
@116:
	inc       ebx
@108:
	mov       ecx,esi
	mov       eax,ecx
	cdq
	xor       eax,edx
	sub       eax,edx
	cmp       ebx,eax
	jl        short @107
?live16395@128: ; 
	push      32
	call      @biosprint
	test      eax,eax
	jne       short @110
	push      13
	call      @biosprint
@119:
@110:
	pop       esi
	pop       ebx
	pop       ebp
	ret       4
@Feed_Paper	endp
Feed_Paper	ends
_TEXT	ends
_TEXT	segment dword public use32 'CODE'
End_Page	segment virtual
	align	2
@End_Page	proc	near
?live16396@0:
@120:
	push      12
	call      @biosprint
@122:
@121:
	ret 
@End_Page	endp
End_Page	ends
_TEXT	ends
_TEXT	segment dword public use32 'CODE'
biosprint	segment virtual
	align	2
@biosprint	proc	near
?live16397@0:
@123:
	push      ebp
	mov       ebp,esp
	push      ebx
	push      esi
	mov       esi,offset _CircleTimes
?live16397@16: ; ESI = &_CircleTimes
@124:
	xor       ebx,ebx
?live16397@32: ; EBX = j, ESI = &_CircleTimes
@125:
	call      @IsPrnStatusOk
?live16397@48: ; EAX = ret, EBX = j, ESI = &_CircleTimes
	test      eax,eax
	je        short @128
?live16397@64: ; ESI = &_CircleTimes
	cmp       eax,-10003
	jne       @130
?live16397@80: ; EAX = ret
	cmp       ebx,99
	jne       short @132
	mov       eax,-10003
	jmp       short @130
?live16397@96: ; EBX = j, ESI = &_CircleTimes
@132:
	push      50
	call      @Sleep
@133:
	inc       ebx
	cmp       ebx,100
	jl        short @125
?live16397@128: ; ESI = &_CircleTimes
@128:
	mov       cx,word ptr [_IoPortBase]
	mov       dl,byte ptr [ebp+8]
	push      edx
	push      ecx
	call      @@_outp$qusuc
	add       esp,8
	xor       eax,eax
	jmp       short @136
@135:
	inc       eax
@136:
	cmp       eax,dword ptr [esi]
	jl        short @135
	mov       cx,word ptr [_IoPortBase]
	mov       dl,byte ptr [_MakePrt]
	and       dl,13
	add       cx,2
	push      edx
	push      ecx
	call      @@_outp$qusuc
	add       esp,8
	xor       eax,eax
	jmp       short @139
@138:
	inc       eax
@139:
	cmp       eax,dword ptr [esi]
	jl        short @138
	mov       cx,word ptr [_IoPortBase]
	mov       dl,byte ptr [_MakePrt]
	and       dl,12
	add       cx,2
	push      edx
	push      ecx
	call      @@_outp$qusuc
	add       esp,8
	xor       eax,eax
	jmp       short @142
@141:
	inc       eax
@142:
	cmp       eax,dword ptr [esi]
	jl        short @141
?live16397@224: ; 
	xor       eax,eax
@144:
@130:
	pop       esi
	pop       ebx
	pop       ebp
	ret       4
@biosprint	endp
biosprint	ends
_TEXT	ends
_TEXT	segment dword public use32 'CODE'
Get_PrnErrMsg	segment virtual
	align	2
@Get_PrnErrMsg	proc	near
?live16398@0:
@145:
	push      ebp
	mov       ebp,esp
	push      ebx
	push      esi
	push      edi
	mov       ebx,dword ptr [ebp+12]
	mov       eax,dword ptr [ebp+8]
?live16398@16: ; EAX = ErrNo, EBX = ErrMsg
	cmp       eax,-10001
	jne       short @146
?live16398@32: ; EBX = ErrMsg
	mov       esi,offset s@
	mov       edi,ebx
	mov       eax,edi
	movsd

⌨️ 快捷键说明

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