从pc裸机磁盘(第一个扇区以后的扇区)中载入程序数据并运行
2017-09-09 19:52
204 查看
;$$ - start position bits 16 cpu 8086 org 07c00h mov ax,cs mov ds,ax mov es,ax ;output bootMsg -- first msg mov ax,bootMsg ;input parameter msg mov cx,bootMsgLen ;str length mov dh,00h ;第1行 call ShowMsg ;output str ;load second Second Sector Code data ;Have to load it! Or errors will occur. call LoadSecondSectorRun ;exec second sector code jmp SecondSectorRun jmp $ ;loop at current postion ShowMsg: mov bp,ax mov ax,01301h mov bx,000ch mov dl,0 ;列 dh 是行 int 10h ret ;载入第二个扇区数据,从磁盘到内存 LoadSecondSectorRun: mov ah,02h ;读磁盘扇区 mov al,01h ;读取1个扇区 mov ch,00h ;起始磁道 mov cl,02h ;起始扇区 mov dh,00h ;磁头号 mov dl,00h ;驱动器号 mov bx,SecondSectorRun ;存储缓冲区 int 13h ret bootMsg: db "Hello,World!" bootMsgLen equ $-bootMsg ;$ -current position times 510-($-$$) db 0 dw 0xaa55 SecondSectorRun: ;output secondSectorRunMsg -- first msg mov ax,secondSectorRunMsg ;input parameter msg mov cx,ssrmLen ;str length mov dh,01h ;第2行 call ShowMsg ;output str secondSectorRunMsg: db "Loaded Second Sector Data Successfully!" ssrmLen equ $-secondSectorRunMsg times 512*2-($-$$) db 0
从磁盘载入数据到内存,用 int 13h,相关参数查文档. 这里磁盘载入的数据以扇区为单位. 还有相关的LBA什么的,要想了解,也要查资料.
相关文章推荐
- O_board-2-运行第一个裸机程序
- 【Sublime】Mac下使用Sublime编译运行带输入数据的程序
- 安卓手机上运行 PC-E500 程序
- java基础(1)-开发环境的搭建和第一个java程序的运行
- Android6.0以后,在BroadcastReceiver中启动AlertDialog导致程序停止运行的问题及解决办法
- [OpenGL学习] mac上运行第一个openGL程序
- main()是程序运行的第一个函数吗?
- RAM之程序运行时数据和代码加载
- 微信小程序-----安装,编写第一个小程序和运行到手机端
- 本人第一个能成功运行的hibernate程序
- 如何让开机后第一个运行的程序是我的程序,而不是Launcher?
- java程序运行时的数据存放、内存分配
- 原声JS判断程序运行平台Pc OR Mobile
- 磁道磁盘浅谈机械磁盘相关概念:磁道、柱面、扇区、寻道时间、旋转延迟、数据传输时间
- CUDA小记(2)运行第一个CUDA程序
- VC 程序只运行一个进程,再次运行传参数给第一个进程的问题
- 在Eclipse中运行第一个MapReduce程序
- 汇编语言三 设数组ARRAY存储多个8位无符号数据,其中第一个字用于存放数据个数,试编写程序求数组元素之和,将结果存放在AX中,若计算的和超过16位数表示的范围,则给出溢出标志DX=-1,否则D
- 调程序的小工具--数据制造,对拍和查看程序运行时间
- S3C6410开发(3)-编译运行第一个流水灯程序