

因为ah是8bit,所以会传送一个字节的数据到ah寄存器中

ax 是 16bit,所以会传送两个字节的数据到它那里

综上,就是会自动判断寄存器的大小,来移动数据。
mov ax,bx是可以的,但是mov cx,dh就不可以,必须保持左右两边宽度一样
所以总共有9个mov操作
mov word [0x01], 0xb80
加了[]为内存单元,不加的时候是立即数

8086是16位的计算机,但是它的数据总线有20位,所以有1M的寻址



如果每一段位16Byte,那么1M就有65536个16Byte
如果每一段为64kb,那么就有16个64KB

下面可以看到一个物理地址,根据分段的不同,有多个逻辑地址,这也很好理解,因为分段不一样

根据实际运行来给段地址





Bochs官网:http://bochs.sourceforge.net/
Bochs下载:https://sourceforge.net/projects/bochs/files/bochs/2.6.11/
Bochs命令:http://bochs.sourceforge.net/cgi-bin/topper.pl?name=New+Bochs+Documentation&url=http://bochs.sourceforge.net/doc/docbook/user/index.html


然后点击disk Boot,出现下面







可以通过load来加载

运行,如果运行失败把里面的lock文件删除了重新来



e05b是bios程序的入口





















mov ax, 0x7c00
mov ds, ax
mov bx, 0x353637
mov byte [0xf1], 'h'
mov byte [0xf2], 0x3839
jmp $
times 510-($-$$) db 0
db 0x55,0xaa
编译
nasm -f bin .\mov2.asm -o .\mov2.bin



结果保存在第一个








s 200
表示循环200次
32位加法




64位寄存器,但是关注后16bit























