📄 string.asm
字号:
extern Disp_pos
global MemoryCopy
global MemorySet
global DisplayString
global DisplayColorString
global OutByte
global InByte
global LockIrq
global UnLock
global DisableIrq
global EnableIrq
MemoryCopy:
push ebp
mov ebp,esp
push esi
push edi
push ecx
mov edi,[ebp+8]
mov esi,[ebp+12]
mov ecx,[ebp+16]
.1:
cmp ecx,0
jz .2
mov al,[ds:esi]
inc esi
mov byte [es:edi],al
inc edi
dec ecx
jmp .1
.2:
mov eax,[ebp+8]
pop ecx
pop edi
pop esi
mov esp,ebp
pop ebp
ret
MemorySet:
push ebp
mov ebp,esp
push esi
push edi
push ecx
mov edi,[ebp+8]
mov edx,[ebp+12]
mov ecx,[ebp+16]
.14:
cmp ecx,0
jz .24
mov byte [edi],dl
inc edi
dec ecx
jmp .14
.24:
pop ecx
pop edi
pop esi
mov esp,ebp
pop ebp
ret
DisplayString:
push ebp
mov ebp ,esp
mov esi,[ebp+8]
mov edi,[Disp_pos]
mov ah,0Fh
.12:
lodsb
test al,al
jz .22
cmp al,0ah
jnz .32
push eax
mov eax,edi
mov bl,160
div bl
and eax,0ffh
inc eax
mov bl,160
mul bl
mov edi,eax
pop eax
jmp .12
.32:
mov [gs:edi],ax
add edi,2
jmp .12
.22:
mov [Disp_pos],edi
pop ebp
ret
OutByte:
mov edx,[esp+4]
mov al,[esp+4+4]
out dx,al
nop
nop
ret
InByte:
mov edx,[esp+4]
xor eax,eax
in al,dx
nop
nop
ret
DisplayColorString:
push ebp
mov ebp ,esp
UD
mov esi,[ebp+8]
mov edi,[Disp_pos]
mov ah,[ebp+12]
.13:
lodsb
test al,al
jz .23
cmp al,0ah
jnz .33
push eax
mov eax,edi
mov bl,160
div bl
mov eax,0ffh
inc eax
mov bl,160
mul bl
mov edi,eax
pop eax
jmp .13
.33:
mov [gs:edi],ax
add edi,2
jmp .13
.23:
mov [Disp_pos],edi
pop ebp
ret
DisableIrq:
mov ecx, [esp+4]
pushf
cli
mov ah,1
rol ah,cl
cmp cl,8
jae Disable8
Disable0:
in al,0x21
test al,ah
jnz DisAlready
or al,ah
out 0x21,al
popf
mov eax,1
ret
Disable8:
in al,0xa1
test al,ah
jnz DisAlready
or al,ah
out 0xa1,al
popf
mov eax,1
ret
DisAlready:
popf
xor eax,eax
ret
EnableIrq:
mov ecx, [esp+4]
pushf
cli
mov ah,~1
rol ah,cl
cmp cl,8
jae Enable8
Enable0:
in al,0x21
and al,ah
out 0x21,al
popf
ret
Enable8:
in al,0xa1
and al,ah
out 0xa1,al
popf
ret
LockIrq:
cli
ret
UnLock:
sti
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -