Skip to content

MariaLatore/masm

Repository files navigation

masm

介绍

王爽《汇编语言》

备忘录

init bat for docbox: [autoexec]

# Lines in this section will be run at startup.

# You can put your MOUNT lines here.

imgmount a D:\docbox\floppy.img -t floppy

MOUNT C D:\docbox\workspace

C:

总结

关于 Project2:

  1. floppy 扇区布局:

    扇区1:一段搬运小程序,将扇区2-11共10个512 bytes扇区的内容搬运到 0800:0000处

    扇区2-11:真正的主程序

  2. 程序流程:

    步骤1:运行floppy的扇区1的的小程序,将扇区2-11的内容搬运到0800:0000处,并跳转到 0800:0000 处开始执行程序

    步骤2:运行0000:0800处的主程序

  3. 内存布局:

    begin end usage
    0000:0200 0000:0203 用于存放旧的 int9 中断的程序入口
    0000:0204 0000:0204 用于存放 sub3 display 的颜色字体控制字符
    0000:0205 ???? 安装的新 int9 中断,用于 sub3 接受键盘输入
    0800:0000 ???? 用于存放主要的程序
    0900:0700 ???? 用于 sub2 存放读入的 boot 盘的第一扇区

    其中由于没有找到 boot 盘,目前 sub2 还是将floppy的扇区1读入,即重启本程序

    由于存在从磁盘读取如内存并执行的情况,笔者很多次遇到了内存踩踏程序卡死的情况,debug 了很久,如果第二次写该程序,笔者一开始就会做好内存的布局打算,笔者第一次做的时候还不知道。

  4. 开发的时候,不能额外定义段,所有的数据都在 code 段定义,由于进行了CS:IP的改变,主函数关于flag偏移的计算,要相对main函数的开始进行计算,而非 install 程序的开始。

  5. boot_floppy 可以在 dosbox-x 上boot并进入程序。整个的开发是在 dosbox 上进行的,dosbox 的窗口太小,要么全屏,显示不很方便。

  6. sub3改变颜色的策略是对控制颜色的一位进行 mod 2 加一,所以只支持切换一种颜色。

  7. floppy 当作启动盘的时候要往盘的扇区1的最后两个bytes输入magic num 0x55 0xaa。

  8. sub4 当堆栈空的时候,显示会先打印一个空格,这点需要改进。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors