|
![]() ![]() |
![]() ![]() ![]() |
![]() ![]() |
![]() |
![]() |
![]() |
![]() |
hacs98 | ||||||
![]() |
|||||||
![]() |
Ä¿³Îµå¶óÀ̺긦 ¾î¼Àºí¸®¾î·Î ©¼öÀִ°¡?? | ||||||
![]() |
|||||||
http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Board&no=37851 [º¹»ç]
Hit : 250 Date : 2025/02/03 10:04
|
|||||||
![]() |
![]() | ![]() |
![]() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ÇØÅ·ÀßÇϰí½Í´Ù | ; serial µå¶óÀ̹ö ÃʱâÈ ÇÔ¼ö global init_serial global serial_write_char section .text ; void init_serial() init_serial: mov dx, 0x3F8 ; COM1 Æ÷Æ® mov al, 0x00 out dx, al ; Interrupt Disable Register = 0 mov dx, 0x3FB ; Line Control Register mov al, 0x80 out dx, al ; DLAB (enable baud rate divisor) mov dx, 0x3F8 ; Divisor Low Byte (baud rate) mov al, 0x03 ; 38400 baud (divisor = 3) out dx, al mov dx, 0x3F9 ; Divisor High Byte mov al, 0x00 out dx, al mov dx, 0x3FB mov al, 0x03 ; 8 bits, no parity, one stop bit out dx, al mov dx, 0x3FC ; FIFO Control Register mov al, 0xC7 ; Enable FIFO, clear them, with 14-byte threshold out dx, al mov dx, 0x3FE ; Modem Control Register mov al, 0x0B ; IRQs enabled, RTS/DSR set out dx, al ret ; void serial_write_char(char c) ; c is in AL serial_write_char: mov dx, 0x3F8 ; Wait until transmit buffer is empty .wait: in al, 0x3FD test al, 0x20 jz .wait mov dx, 0x3F8 out dx, al ; Write character ret extern void init_serial(); extern void serial_write_char(char c); void kmain() { init_serial(); char* msg = "Hello from assembly serial driver!\r\n"; for (int i = 0; msg[i] != '\0'; i++) { serial_write_char(msg[i]); } while (1); } |
2025/03/21 | |
![]() |
|
|
|
|