kprint.asm
来自「jserv写的orz小内核 有详细的注释」· 汇编 代码 · 共 98 行
ASM
98 行
;-------------------------------------------------------------------------------;;;; IN: AL - number, EDI - bufferPtr[2];;;; OUT: hex number in ptrBuffer;;;; MODIFY: AL, CL, EBX, ESI, EDIPrintHexByte: mov ebx, hexTab mov cl, al shr al, 4 xlatb stosb mov al, cl and al, 0x0F xlatb stosb ret;;;; IN: AX - number, EDI - bufferPtr[4];;;; OUT: hex number in ptrBuffer;;;; MODIFY: AL, CX, EBX, ESI, EDIPrintHexWord: mov ch, al mov al, ah call PrintHexByte mov al, ch jmp PrintHexByte;;;; IN: EAX - number, EDI - bufferPtr[4];;;; OUT: hex number in ptrBuffer;;;; MODIFY: EAX, CX, EBX, ESI, EDIPrintHexDword: push ax shr eax, 0x10 call PrintHexWord pop ax jmp PrintHexWordhexTab db "0123456789ABCDEF";-------------------------------------------------------------------------------;;;; IN: ESI - string, EDI - screenPtr, AH - attribute;;;; OUT: text on screen;;;; MODIFY: ESI, EDI, ALPrintText: lodsb and al, al jz PrintText0 stosb mov al, ah stosb jmp short PrintTextPrintText0: ret;-------------------------------------------------------------------------------;;;;kprhexPos dd 0xB8000kprhexColor db 15kprhexbufD db "...."kprhexbufW db ".."kprhexbufB db ".." db 0PrintHexDwordScreen: pushad mov edi, kprhexbufD call PrintHexDword mov esi, kprhexbufDPrintHexOnScreen: mov ah, [kprhexColor] mov edi, [kprhexPos] call PrintText mov edi, [kprhexPos] add edi, 160 mov [kprhexPos], edi popad retPrintHexWordScreen: pushad mov edi, kprhexbufW call PrintHexWord mov esi, kprhexbufW jmp PrintHexOnScreenPrintHexByteScreen: pushad mov edi, kprhexbufB call PrintHexByte mov esi, kprhexbufB jmp PrintHexOnScreen
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?