【汇编】多进程,多任务的实现(.asm源码)

项目环境
  • 编译环境:搭建一个nasm2.8的编译环境。
  • 镜像文件:采用winhex_18.2刷入编码。
  • 虚拟机:采用Bochs-2.4.5
项目软件
运行结果

在这里插入图片描述

程序源码(.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 

猜你喜欢

转载自blog.csdn.net/Gyangxixi/article/details/113613871
今日推荐