# x86asm **Repository Path**: nowaits/x86asm ## Basic Information - **Project Name**: x86asm - **Description**: x86保护模式编程测试 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-07-09 - **Last Updated**: 2023-07-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # x86系列CPU保护模式测试 基于DOS系统,测试包括如下: - 基础汇编指令 - BIOS、DOS中断 - A20总线、保护模式 - 内存分段、分页 - 调用门、中断门、任务门等 ## 编译 - [masm 5.0](https://winworldpc.com/product/macro-assembler/5x) - 编译工具: - masm /help - link /help - 调试 - debug32 - debugx - cv ## dosbox环境 由于dosbox call/jmp不支持任务门跳转,需要单独patch修复,所以不能直接使用 ### A)[码云直接下载](https://gitee.com/nowaits/dosbox-x/releases/download/call/jmp/mingw.zip) ### B)windows编译 #### MSYS32依赖 - 下载[MSYS2](https://www.msys2.org/) - 打开`MSYS32 MINGW64`shell : ``` # 安装开发工具 pacman -S --needed base-devel mingw-w64-x86_64-toolchain autoconf automake # 安装git pacman -S --needed git ``` #### 源码编译 - clone代码`git clone git@github.com:nowaits/dosbox-x.git dosbox-x-mingw` - 编译打包: ``` export MSYSTEM=MINGW32 export MSYSTEM_CARCH= ./dosbox-x-mingw/build-scripts/mingw/make-mingw.sh ``` - 编译包位置:`mingw-build/mingw` ## kvm dos环境 实际测试中,freedos比ms-dos更稳定易用 - [下载vncviewer](https://www.realvnc.com/en/connect/download/viewer/) ### A) Freedos1.3 - [下载freedos1.3安装盘](https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.3/official/FD13-LiteUSB.zip) - 生成硬盘:`qemu-img create -f qcow2 dos.img 500m` - 安装: ``` kvm -m 128 -display vnc=0.0.0.0:0 \ -hda FD13LITE.img \ -hdb dos.img \ -boot order=c ``` ### B) [MS-DOS](https://winworldpc.com/product/ms-dos/622) - [下载ms-dos7.1安装ISO](https://winworldpc.com/download/40c2bd6b-6618-c39a-11c3-a4e284a2c3a5) - 生成硬盘:`qemu-img create -f qcow2 dos.img 500m` - 安装 ``` kvm -m 128 -display vnc=0.0.0.0:0 \ -cdrom dos71cd.iso \ -hda dos.img \ -boot order=d ``` ### C) [使用ms-dos镜像](https://winworldpc.com/download/3dc3906e-0918-c39a-11c3-a4e284a2c3a5) - 下载解压,直接使用`MS-DOS_6.22_VHD.vhd` ### vnc启动 - nodte: `drive file=`需要kvm >= `2.0` ``` kvm -m 128 -display vnc=0.0.0.0:0 \ -hda \ -drive file=fat:rw:/root/dos/ \ -boot order=c ``` ### vnc远程连接: IP:5900 --- ## debug用法 - A: 添加汇编语句 - T: 单步执行 - RX: 显示FPU寄存器 - RX: 打开i386寄存器显示 - M [x]: 设置80x86模式 - TM [0|1]: trace中断