0166-BIOS 中断

环境

  • Time 2022-11-09
  • WSL-Ubuntu 22.04
  • QEMU 6.2.0
  • NASM 2.15.05

前言

说明

参考:《x86汇编语言:从实模式到保护模式》李忠
参考:http://www.ablmcc.edu.hk/~scy/CIT/8086_bios_and_dos_interrupts.htm

目标

使用 BIOS 中断,来进行屏幕的输出。

BIOS 中断

BIOS 中断是 BIOS 启动后,从地址 0x0000 处初始化的一个中断向量表。
其中存放的是段地址和偏移地址,每个终端号对应四个字节,一共可以有 256 个中断号。

汇编代码

jmp start

data: db 'hello world'

start:
    mov cx,start - data
    mov bx,0x7c00 + data
printc:
    mov al,[bx]
    mov ah, 0eh
    int 10h
    inc bx
    loop printc
    jmp $

    times 510 - $ + $$ db 0
    db 0x55
    db 0xaa

字符定义

之前是通过对单个字符进行定义的,这里直接使用了字符串,用单引号引起来。

loop 循环

使用了 CX 寄存器来存储字符的个数,使用 loop 进行循环。

中断

使用的是 0X10 中断,子功能号是 0X0E,表示向屏幕输出,并后移光标。
AL 寄存器存储将要显示的字符,AL 寄存器填写子功能号,最后使用 int 10h 进行中断。
该中断为 BIOS 提供。

总结

使用 BIOS 的中断,向屏幕输出了 hello world。

附录

posted @   jiangbo4444  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2020-07-12 【JavaScript】函数—可重用的代码块
2020-07-12 【JavaScript】循环语句
点击右上角即可分享
微信分享提示