鱼C论坛

 找回密码
 立即注册
查看: 2826|回复: 0

[学习笔记] X86汇编语言-从实模式到保护模式—笔记(12)

[复制链接]
发表于 2017-11-2 21:20:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 兰陵月 于 2017-12-5 21:55 编辑

第9章  中断和动态时钟显示

例程理解学习


二、BIOS中断演示程序
  1.          ;代码清单9-2
  2.          ;文件名:c09_2.asm
  3.          ;文件说明:用于演示BIOS中断的用户程序
  4.          ;创建日期:2012-3-28 20:35

  5. ;===============================================================================
  6. SECTION header vstart=0                     ;定义用户程序头部段
  7.     program_length  dd program_end          ;程序总长度[0x00]

  8.     ;用户程序入口点
  9.     code_entry      dw start                ;偏移地址[0x04]
  10.                     dd section.code.start   ;段地址[0x06]

  11.     realloc_tbl_len dw (header_end-realloc_begin)/4
  12.                                             ;段重定位表项个数[0x0a]

  13.     realloc_begin:
  14.     ;段重定位表
  15.     code_segment    dd section.code.start   ;[0x0c]
  16.     data_segment    dd section.data.start   ;[0x14]
  17.     stack_segment   dd section.stack.start  ;[0x1c]

  18. header_end:

  19. ;===============================================================================
  20. SECTION code align=16 vstart=0           ;定义代码段(16字节对齐)
  21. start:
  22.       mov ax,[stack_segment]
  23.       mov ss,ax
  24.       mov sp,ss_pointer
  25.       mov ax,[data_segment]
  26.       mov ds,ax

  27.       mov cx,msg_end-message
  28.       mov bx,message

  29. .putc:
  30.       mov ah,0x0e
  31.       mov al,[bx]
  32.       int 0x10
  33.       inc bx
  34.       loop .putc

  35. .reps:
  36.       mov ah,0x00
  37.       int 0x16

  38.       mov ah,0x0e
  39.       mov bl,0x07
  40.       int 0x10

  41.       jmp .reps

  42. ;===============================================================================
  43. SECTION data align=16 vstart=0

  44.     message       db 'Hello, friend!',0x0d,0x0a
  45.                   db 'This simple procedure used to demonstrate '
  46.                   db 'the BIOS interrupt.',0x0d,0x0a
  47.                   db 'Please press the keys on the keyboard ->'
  48.     msg_end:

  49. ;===============================================================================
  50. SECTION stack align=16 vstart=0

  51.                  resb 256
  52. ss_pointer:

  53. ;===============================================================================
  54. SECTION program_trail
  55. program_end:
复制代码

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 18:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表