[Assembly] Multi-process, multi-task realization (.asm source code)

Project environment
  • Compilation environment: build a nasm2.8 compilation environment.
  • Mirror file: use winhex_18.2 to brush in the code.
  • Virtual machine: Bochs-2.4.5 is used .
Project software
operation result

Insert picture description here

Program source code (.asm)
org 0x8400
start:
    sti    ;IF=1
    ;cli     ;IF=0
    mov ax,0xb800 ; 指向文本模式的显示缓冲区
    mov word [ds:0x22],0            ;
    mov es,ax

    mov ax,0
    mov ds,ax
    mov bx, 0

    call sleep
    mov word [ds:0x20],int_time0    ;20十六进制:32十进制,相当于中断表的第八个位置
    mov word [ds:0x22],0            ;

    call sleep
    mov word [ds:0x24],int_time1
    mov word [ds:0x26],0
    
    jmp $

    ; 默认 1/18 s
int_time0:
    mov byte [es:bx],"A"
    mov byte [es:bx+1],0x0a
    inc bx
    inc bx

int_time1:
    mov byte [es:bx],'1'
    mov byte [es:bx+1],0x0c
    inc bx
    inc bx
x1:
    mov al,0x20
    mov dx,0x20
    out dx,al               ;EOI = 1 中断结束
    iret                    ;

; 通过循环来延迟执行拆分时间片
sleep:
    push bx  ; 压栈
    mov bx, 0
x2:
    inc bx
    cmp bx, 128
    ja x2

    pop bx ; 出栈
	ret 

Guess you like

Origin blog.csdn.net/Gyangxixi/article/details/113613871