注:本文为笔者的学习笔记,并非教学文章。旨在记录笔者本人的学习过程,摸索中遇到的困难以及积累经验,若能为有相同难题的朋友提供一定的前车之鉴则再好不过。希望各位辩证性阅读,讨论。
相关软硬件版本
VMware® Workstation 17 Pro 版本17.5.1 build-23298084
搭建Ubuntu系统,版本ubuntu-16.04.6-desktop-i386
bochs2.7。
任务一:删掉0XAA55,重新运行,观察现象
书接上回,我们成功使用bochs创建了我们的第一张虚拟软盘,并且把我们的引导扇区写进了虚拟软盘、调试好我们的配置文件,使我们想要的画面呈现在了计算机上面。
但事情远远没有这么简单;还记得我们的引导扇区的代码是什么吗?
org 07c00h ;告诉编译器程序加载到7C00处
mov ax,cs
mov ds,ax
mov es,ax
call DispStr ;调用显示字符串例程
jmp $ ;无限循环
DispStr:
mov ax,BootMessage
mov bp,ax ;ES:BP =串地址
mov cx,16 ;CX=串长度
mov ax,01301h ;AH=13,AL=01H
mov bx,000ch ;页号为0(BH=0)黑底红字(BL=0Ch,高亮)
mov dl,0
int 10h ;10号中断
ret
BootMessage: db "Hello, OS world!"
times 510-($-$$) db 0 ;填充剩下的空间使生成的二进制代码恰好为512字节
dw 0xaa55 ;结束标识
下一步我们希望(其实是老师希望,我一点也不想)删掉0Xaa55,看看会发生什么……
第一步我们修改我们的boot.asm文件,删掉其中的0xaa55一行,并重新编译成boot.bin文件。
到这一步之后,让我们重新创建一个软盘,这是因为据说(
这就是实验做的慢的好处,前人栽树后人乘凉(doge)
little case,小小软盘拿捏👌
让我们把新的boot.bin写进新软盘:(到现在都还没有报错,我真厉害)
也是开始激情仿真了——
噶?bochs仿真窗口闪退了噶?(这是正常实验现象吗?)
其实爱学习的小周同学已经知道了,当计算机电源被打开时会加电自检POST然后寻找启动盘,如果是从软盘启动就会检查软盘的0面0磁道1扇区,如果发现它以0Xaa55结束则BIOS认为它是一个引导扇区。(那我把0XAA55删掉了,BIOS自然就无法识别它是一个引导扇区了)
OK,过
任务二:修改程序输出为一个包含自己名字的字符串
#还是来改我们的老朋友boot.asm(这样对吗?)
org 07c00h
mov ax,cs
mov ds,ax
mov es,ax
call DispStr
jmp $
DispStr:
mov ax,BootMessage
mov bp,ax
mov cx,16
mov ax,01301h
mov bx,000ch
mov dl,0
int 10h
ret
BootMessage: db "Hello, eggpans!"
times 510-($-$$) db 0
dw 0Xaa55
挂到b.img又闪退了(还好这次只疑惑了一秒就找到了问题所在)
重新挂到a.img,运行成功,我真棒(你知道我每天要哄自己多少下才能坚持做完实验吗):
试试中文,果然出错了(老师我现在去派出所改英文名来得及吗):
查了半天资料也没找到怎么改编码,应该就是单纯不支持中文输出(国人当自强啊)
任务三:把生成的可执行文件反汇编,看看输出的内容是怎样 的,并在虚拟机启动过程,设置断点进行调试。
输入指令:ndisasm -o 0x7c00 boot.bin >> disboot.asm
将boot.bin文件反汇编,打开disboot.asm
00007C00 8CC8 mov ax,cs
00007C02 8ED8 mov ds,ax
00007C04 8EC0 mov es,ax
00007C06 E80200 call word 0x7c0b
00007C09 EBFE jmp short 0x7c09
00007C0B B81E7C mov ax,0x7c1e
00007C0E 89C5 mov bp,ax
00007C10 B91000 mov cx,0x10
00007C13 B80113 mov ax,0x1301
00007C16 BB0C00 mov bx,0xc
00007C19 B200 mov dl,0x0
00007C1B CD10 int 0x10
00007C1D C3 ret
00007C1E 48 dec ax
00007C1F 656C gs insb
00007C21 6C insb
00007C22 6F outsw
00007C23 2C20 sub al,0x20
00007C25 4F dec di
00007C26 53 push bx
00007C27 20776F and [bx+0x6f],dh
00007C2A 726C jc 0x7c98
00007C2C 642100 and [fs:bx+si],ax
00007C2F 0000 add [bx+si],al
00007C31 0000 add [bx+si],al
00007C33 0000 add [bx+si],al
00007C35 0000 add [bx+si],al
00007C37 0000 add [bx+si],al
00007C39 0000 add [bx+si],al
00007C3B 0000 add [bx+si],al
00007C3D 0000 add [bx+si],al
00007C3F 0000 add [bx+si],al
00007C41 0000 add [bx+si],al
00007C43 0000 add [bx+si],al
00007C45 0000 add [bx+si],al
00007C47 0000 add [bx+si],al
00007C49 0000 add [bx+si],al
00007C4B 0000 add [bx+si],al
00007C4D 0000 add [bx+si],al
00007C4F 0000 add [bx+si],al
00007C51 0000 add [bx+si],al
00007C53 0000 add [bx+si],al
00007C55 0000 add [bx+si],al
00007C57 0000 add [bx+si],al
00007C59 0000 add [bx+si],al
00007C5B 0000 add [bx+si],al
00007C5D 0000 add [bx+si],al
00007C5F 0000 add [bx+si],al
00007C61 0000 add [bx+si],al
00007C63 0000 add [bx+si],al
00007C65 0000 add [bx+si],al
00007C67 0000 add [bx+si],al
00007C69 0000 add [bx+si],al
00007C6B 0000 add [bx+si],al
00007C6D 0000 add [bx+si],al
00007C6F 0000 add [bx+si],al
00007C71 0000 add [bx+si],al
00007C73 0000 add [bx+si],al
00007C75 0000 add [bx+si],al
00007C77 0000 add [bx+si],al
00007C79 0000 add [bx+si],al
00007C7B 0000 add [bx+si],al
00007C7D 0000 add [bx+si],al
00007C7F 0000 add [bx+si],al
00007C81 0000 add [bx+si],al
00007C83 0000 add [bx+si],al
00007C85 0000 add [bx+si],al
00007C87 0000 add [bx+si],al
00007C89 0000 add [bx+si],al
00007C8B 0000 add [bx+si],al
00007C8D 0000 add [bx+si],al
00007C8F 0000 add [bx+si],al
00007C91 0000 add [bx+si],al
00007C93 0000 add [bx+si],al
00007C95 0000 add [bx+si],al
00007C97 0000 add [bx+si],al
00007C99 0000 add [bx+si],al
00007C9B 0000 add [bx+si],al
00007C9D 0000 add [bx+si],al
00007C9F 0000 add [bx+si],al
00007CA1 0000 add [bx+si],al
00007CA3 0000 add [bx+si],al
00007CA5 0000 add [bx+si],al
00007CA7 0000 add [bx+si],al
00007CA9 0000 add [bx+si],al
00007CAB 0000 add [bx+si],al
00007CAD 0000 add [bx+si],al
00007CAF 0000 add [bx+si],al
00007CB1 0000 add [bx+si],al
00007CB3 0000 add [bx+si],al
00007CB5 0000 add [bx+si],al
00007CB7 0000 add [bx+si],al
00007CB9 0000 add [bx+si],al
00007CBB 0000 add [bx+si],al
00007CBD 0000 add [bx+si],al
00007CBF 0000 add [bx+si],al
00007CC1 0000 add [bx+si],al
00007CC3 0000 add [bx+si],al
00007CC5 0000 add [bx+si],al
00007CC7 0000 add [bx+si],al
00007CC9 0000 add [bx+si],al
00007CCB 0000 add [bx+si],al
00007CCD 0000 add [bx+si],al
00007CCF 0000 add [bx+si],al
00007CD1 0000 add [bx+si],al
00007CD3 0000 add [bx+si],al
00007CD5 0000 add [bx+si],al
00007CD7 0000 add [bx+si],al
00007CD9 0000 add [bx+si],al
00007CDB 0000 add [bx+si],al
00007CDD 0000 add [bx+si],al
00007CDF 0000 add [bx+si],al
00007CE1 0000 add [bx+si],al
00007CE3 0000 add [bx+si],al
00007CE5 0000 add [bx+si],al
00007CE7 0000 add [bx+si],al
00007CE9 0000 add [bx+si],al
00007CEB 0000 add [bx+si],al
00007CED 0000 add [bx+si],al
00007CEF 0000 add [bx+si],al
00007CF1 0000 add [bx+si],al
00007CF3 0000 add [bx+si],al
00007CF5 0000 add [bx+si],al
00007CF7 0000 add [bx+si],al
00007CF9 0000 add [bx+si],al
00007CFB 0000 add [bx+si],al
00007CFD 0000 add [bx+si],al
00007CFF 0000 add [bx+si],al
00007D01 0000 add [bx+si],al
00007D03 0000 add [bx+si],al
00007D05 0000 add [bx+si],al
00007D07 0000 add [bx+si],al
00007D09 0000 add [bx+si],al
00007D0B 0000 add [bx+si],al
00007D0D 0000 add [bx+si],al
00007D0F 0000 add [bx+si],al
00007D11 0000 add [bx+si],al
00007D13 0000 add [bx+si],al
00007D15 0000 add [bx+si],al
00007D17 0000 add [bx+si],al
00007D19 0000 add [bx+si],al
00007D1B 0000 add [bx+si],al
00007D1D 0000 add [bx+si],al
00007D1F 0000 add [bx+si],al
00007D21 0000 add [bx+si],al
00007D23 0000 add [bx+si],al
00007D25 0000 add [bx+si],al
00007D27 0000 add [bx+si],al
00007D29 0000 add [bx+si],al
00007D2B 0000 add [bx+si],al
00007D2D 0000 add [bx+si],al
00007D2F 0000 add [bx+si],al
00007D31 0000 add [bx+si],al
00007D33 0000 add [bx+si],al
00007D35 0000 add [bx+si],al
00007D37 0000 add [bx+si],al
00007D39 0000 add [bx+si],al
00007D3B 0000 add [bx+si],al
00007D3D 0000 add [bx+si],al
00007D3F 0000 add [bx+si],al
00007D41 0000 add [bx+si],al
00007D43 0000 add [bx+si],al
00007D45 0000 add [bx+si],al
00007D47 0000 add [bx+si],al
00007D49 0000 add [bx+si],al
00007D4B 0000 add [bx+si],al
00007D4D 0000 add [bx+si],al
00007D4F 0000 add [bx+si],al
00007D51 0000 add [bx+si],al
00007D53 0000 add [bx+si],al
00007D55 0000 add [bx+si],al
00007D57 0000 add [bx+si],al
00007D59 0000 add [bx+si],al
00007D5B 0000 add [bx+si],al
00007D5D 0000 add [bx+si],al
00007D5F 0000 add [bx+si],al
00007D61 0000 add [bx+si],al
00007D63 0000 add [bx+si],al
00007D65 0000 add [bx+si],al
00007D67 0000 add [bx+si],al
00007D69 0000 add [bx+si],al
00007D6B 0000 add [bx+si],al
00007D6D 0000 add [bx+si],al
00007D6F 0000 add [bx+si],al
00007D71 0000 add [bx+si],al
00007D73 0000 add [bx+si],al
00007D75 0000 add [bx+si],al
00007D77 0000 add [bx+si],al
00007D79 0000 add [bx+si],al
00007D7B 0000 add [bx+si],al
00007D7D 0000 add [bx+si],al
00007D7F 0000 add [bx+si],al
00007D81 0000 add [bx+si],al
00007D83 0000 add [bx+si],al
00007D85 0000 add [bx+si],al
00007D87 0000 add [bx+si],al
00007D89 0000 add [bx+si],al
00007D8B 0000 add [bx+si],al
00007D8D 0000 add [bx+si],al
00007D8F 0000 add [bx+si],al
00007D91 0000 add [bx+si],al
00007D93 0000 add [bx+si],al
00007D95 0000 add [bx+si],al
00007D97 0000 add [bx+si],al
00007D99 0000 add [bx+si],al
00007D9B 0000 add [bx+si],al
00007D9D 0000 add [bx+si],al
00007D9F 0000 add [bx+si],al
00007DA1 0000 add [bx+si],al
00007DA3 0000 add [bx+si],al
00007DA5 0000 add [bx+si],al
00007DA7 0000 add [bx+si],al
00007DA9 0000 add [bx+si],al
00007DAB 0000 add [bx+si],al
00007DAD 0000 add [bx+si],al
00007DAF 0000 add [bx+si],al
00007DB1 0000 add [bx+si],al
00007DB3 0000 add [bx+si],al
00007DB5 0000 add [bx+si],al
00007DB7 0000 add [bx+si],al
00007DB9 0000 add [bx+si],al
00007DBB 0000 add [bx+si],al
00007DBD 0000 add [bx+si],al
00007DBF 0000 add [bx+si],al
00007DC1 0000 add [bx+si],al
00007DC3 0000 add [bx+si],al
00007DC5 0000 add [bx+si],al
00007DC7 0000 add [bx+si],al
00007DC9 0000 add [bx+si],al
00007DCB 0000 add [bx+si],al
00007DCD 0000 add [bx+si],al
00007DCF 0000 add [bx+si],al
00007DD1 0000 add [bx+si],al
00007DD3 0000 add [bx+si],al
00007DD5 0000 add [bx+si],al
00007DD7 0000 add [bx+si],al
00007DD9 0000 add [bx+si],al
00007DDB 0000 add [bx+si],al
00007DDD 0000 add [bx+si],al
00007DDF 0000 add [bx+si],al
00007DE1 0000 add [bx+si],al
00007DE3 0000 add [bx+si],al
00007DE5 0000 add [bx+si],al
00007DE7 0000 add [bx+si],al
00007DE9 0000 add [bx+si],al
00007DEB 0000 add [bx+si],al
00007DED 0000 add [bx+si],al
00007DEF 0000 add [bx+si],al
00007DF1 0000 add [bx+si],al
00007DF3 0000 add [bx+si],al
00007DF5 0000 add [bx+si],al
00007DF7 0000 add [bx+si],al
00007DF9 0000 add [bx+si],al
00007DFB 0000 add [bx+si],al
00007DFD 0055AA add [di-0x56],dl
00007C00 8CC8 mov ax,cs
00007C02 8ED8 mov ds,ax
00007C04 8EC0 mov es,ax
00007C06 E80200 call word 0x7c0b
00007C09 EBFE jmp short 0x7c09
00007C0B B81E7C mov ax,0x7c1e
00007C0E 89C5 mov bp,ax
00007C10 B91000 mov cx,0x10
00007C13 B80113 mov ax,0x1301
00007C16 BB0C00 mov bx,0xc
00007C19 B200 mov dl,0x0
00007C1B CD10 int 0x10
00007C1D C3 ret
00007C1E 48 dec ax
00007C1F 656C gs insb
00007C21 6C insb
00007C22 6F outsw
00007C23 2C20 sub al,0x20
00007C25 4F dec di
00007C26 53 push bx
00007C27 20776F and [bx+0x6f],dh
00007C2A 726C jc 0x7c98
00007C2C 642100 and [fs:bx+si],ax
00007C2F 0000 add [bx+si],al
00007C31 0000 add [bx+si],al
00007C33 0000 add [bx+si],al
00007C35 0000 add [bx+si],al
00007C37 0000 add [bx+si],al
00007C39 0000 add [bx+si],al
00007C3B 0000 add [bx+si],al
00007C3D 0000 add [bx+si],al
00007C3F 0000 add [bx+si],al
00007C41 0000 add [bx+si],al
00007C43 0000 add [bx+si],al
00007C45 0000 add [bx+si],al
00007C47 0000 add [bx+si],al
00007C49 0000 add [bx+si],al
00007C4B 0000 add [bx+si],al
00007C4D 0000 add [bx+si],al
00007C4F 0000 add [bx+si],al
00007C51 0000 add [bx+si],al
00007C53 0000 add [bx+si],al
00007C55 0000 add [bx+si],al
00007C57 0000 add [bx+si],al
00007C59 0000 add [bx+si],al
00007C5B 0000 add [bx+si],al
00007C5D 0000 add [bx+si],al
00007C5F 0000 add [bx+si],al
00007C61 0000 add [bx+si],al
00007C63 0000 add [bx+si],al
00007C65 0000 add [bx+si],al
00007C67 0000 add [bx+si],al
00007C69 0000 add [bx+si],al
00007C6B 0000 add [bx+si],al
00007C6D 0000 add [bx+si],al
00007C6F 0000 add [bx+si],al
00007C71 0000 add [bx+si],al
00007C73 0000 add [bx+si],al
00007C75 0000 add [bx+si],al
00007C77 0000 add [bx+si],al
00007C79 0000 add [bx+si],al
00007C7B 0000 add [bx+si],al
00007C7D 0000 add [bx+si],al
00007C7F 0000 add [bx+si],al
00007C81 0000 add [bx+si],al
00007C83 0000 add [bx+si],al
00007C85 0000 add [bx+si],al
00007C87 0000 add [bx+si],al
00007C89 0000 add [bx+si],al
00007C8B 0000 add [bx+si],al
00007C8D 0000 add [bx+si],al
00007C8F 0000 add [bx+si],al
00007C91 0000 add [bx+si],al
00007C93 0000 add [bx+si],al
00007C95 0000 add [bx+si],al
00007C97 0000 add [bx+si],al
00007C99 0000 add [bx+si],al
00007C9B 0000 add [bx+si],al
00007C9D 0000 add [bx+si],al
00007C9F 0000 add [bx+si],al
00007CA1 0000 add [bx+si],al
00007CA3 0000 add [bx+si],al
00007CA5 0000 add [bx+si],al
00007CA7 0000 add [bx+si],al
00007CA9 0000 add [bx+si],al
00007CAB 0000 add [bx+si],al
00007CAD 0000 add [bx+si],al
00007CAF 0000 add [bx+si],al
00007CB1 0000 add [bx+si],al
00007CB3 0000 add [bx+si],al
00007CB5 0000 add [bx+si],al
00007CB7 0000 add [bx+si],al
00007CB9 0000 add [bx+si],al
00007CBB 0000 add [bx+si],al
00007CBD 0000 add [bx+si],al
00007CBF 0000 add [bx+si],al
00007CC1 0000 add [bx+si],al
00007CC3 0000 add [bx+si],al
00007CC5 0000 add [bx+si],al
00007CC7 0000 add [bx+si],al
00007CC9 0000 add [bx+si],al
00007CCB 0000 add [bx+si],al
00007CCD 0000 add [bx+si],al
00007CCF 0000 add [bx+si],al
00007CD1 0000 add [bx+si],al
00007CD3 0000 add [bx+si],al
00007CD5 0000 add [bx+si],al
00007CD7 0000 add [bx+si],al
00007CD9 0000 add [bx+si],al
00007CDB 0000 add [bx+si],al
00007CDD 0000 add [bx+si],al
00007CDF 0000 add [bx+si],al
00007CE1 0000 add [bx+si],al
00007CE3 0000 add [bx+si],al
00007CE5 0000 add [bx+si],al
00007CE7 0000 add [bx+si],al
00007CE9 0000 add [bx+si],al
00007CEB 0000 add [bx+si],al
00007CED 0000 add [bx+si],al
00007CEF 0000 add [bx+si],al
00007CF1 0000 add [bx+si],al
00007CF3 0000 add [bx+si],al
00007CF5 0000 add [bx+si],al
00007CF7 0000 add [bx+si],al
00007CF9 0000 add [bx+si],al
00007CFB 0000 add [bx+si],al
00007CFD 0000 add [bx+si],al
00007CFF 0000 add [bx+si],al
00007D01 0000 add [bx+si],al
00007D03 0000 add [bx+si],al
00007D05 0000 add [bx+si],al
00007D07 0000 add [bx+si],al
00007D09 0000 add [bx+si],al
00007D0B 0000 add [bx+si],al
00007D0D 0000 add [bx+si],al
00007D0F 0000 add [bx+si],al
00007D11 0000 add [bx+si],al
00007D13 0000 add [bx+si],al
00007D15 0000 add [bx+si],al
00007D17 0000 add [bx+si],al
00007D19 0000 add [bx+si],al
00007D1B 0000 add [bx+si],al
00007D1D 0000 add [bx+si],al
00007D1F 0000 add [bx+si],al
00007D21 0000 add [bx+si],al
00007D23 0000 add [bx+si],al
00007D25 0000 add [bx+si],al
00007D27 0000 add [bx+si],al
00007D29 0000 add [bx+si],al
00007D2B 0000 add [bx+si],al
00007D2D 0000 add [bx+si],al
00007D2F 0000 add [bx+si],al
00007D31 0000 add [bx+si],al
00007D33 0000 add [bx+si],al
00007D35 0000 add [bx+si],al
00007D37 0000 add [bx+si],al
00007D39 0000 add [bx+si],al
00007D3B 0000 add [bx+si],al
00007D3D 0000 add [bx+si],al
00007D3F 0000 add [bx+si],al
00007D41 0000 add [bx+si],al
00007D43 0000 add [bx+si],al
00007D45 0000 add [bx+si],al
00007D47 0000 add [bx+si],al
00007D49 0000 add [bx+si],al
00007D4B 0000 add [bx+si],al
00007D4D 0000 add [bx+si],al
00007D4F 0000 add [bx+si],al
00007D51 0000 add [bx+si],al
00007D53 0000 add [bx+si],al
00007D55 0000 add [bx+si],al
00007D57 0000 add [bx+si],al
00007D59 0000 add [bx+si],al
00007D5B 0000 add [bx+si],al
00007D5D 0000 add [bx+si],al
00007D5F 0000 add [bx+si],al
00007D61 0000 add [bx+si],al
00007D63 0000 add [bx+si],al
00007D65 0000 add [bx+si],al
00007D67 0000 add [bx+si],al
00007D69 0000 add [bx+si],al
00007D6B 0000 add [bx+si],al
00007D6D 0000 add [bx+si],al
00007D6F 0000 add [bx+si],al
00007D71 0000 add [bx+si],al
00007D73 0000 add [bx+si],al
00007D75 0000 add [bx+si],al
00007D77 0000 add [bx+si],al
00007D79 0000 add [bx+si],al
00007D7B 0000 add [bx+si],al
00007D7D 0000 add [bx+si],al
00007D7F 0000 add [bx+si],al
00007D81 0000 add [bx+si],al
00007D83 0000 add [bx+si],al
00007D85 0000 add [bx+si],al
00007D87 0000 add [bx+si],al
00007D89 0000 add [bx+si],al
00007D8B 0000 add [bx+si],al
00007D8D 0000 add [bx+si],al
00007D8F 0000 add [bx+si],al
00007D91 0000 add [bx+si],al
00007D93 0000 add [bx+si],al
00007D95 0000 add [bx+si],al
00007D97 0000 add [bx+si],al
00007D99 0000 add [bx+si],al
00007D9B 0000 add [bx+si],al
00007D9D 0000 add [bx+si],al
00007D9F 0000 add [bx+si],al
00007DA1 0000 add [bx+si],al
00007DA3 0000 add [bx+si],al
00007DA5 0000 add [bx+si],al
00007DA7 0000 add [bx+si],al
00007DA9 0000 add [bx+si],al
00007DAB 0000 add [bx+si],al
00007DAD 0000 add [bx+si],al
00007DAF 0000 add [bx+si],al
00007DB1 0000 add [bx+si],al
00007DB3 0000 add [bx+si],al
00007DB5 0000 add [bx+si],al
00007DB7 0000 add [bx+si],al
00007DB9 0000 add [bx+si],al
00007DBB 0000 add [bx+si],al
00007DBD 0000 add [bx+si],al
00007DBF 0000 add [bx+si],al
00007DC1 0000 add [bx+si],al
00007DC3 0000 add [bx+si],al
00007DC5 0000 add [bx+si],al
00007DC7 0000 add [bx+si],al
00007DC9 0000 add [bx+si],al
00007DCB 0000 add [bx+si],al
00007DCD 0000 add [bx+si],al
00007DCF 0000 add [bx+si],al
00007DD1 0000 add [bx+si],al
00007DD3 0000 add [bx+si],al
00007DD5 0000 add [bx+si],al
00007DD7 0000 add [bx+si],al
00007DD9 0000 add [bx+si],al
00007DDB 0000 add [bx+si],al
00007DDD 0000 add [bx+si],al
00007DDF 0000 add [bx+si],al
00007DE1 0000 add [bx+si],al
00007DE3 0000 add [bx+si],al
00007DE5 0000 add [bx+si],al
00007DE7 0000 add [bx+si],al
00007DE9 0000 add [bx+si],al
00007DEB 0000 add [bx+si],al
00007DED 0000 add [bx+si],al
00007DEF 0000 add [bx+si],al
00007DF1 0000 add [bx+si],al
00007DF3 0000 add [bx+si],al
00007DF5 0000 add [bx+si],al
00007DF7 0000 add [bx+si],al
00007DF9 0000 add [bx+si],al
00007DFB 0000 add [bx+si],al
00007DFD 00 db 0x00
00007C00 8CC8 mov ax,cs
00007C02 8ED8 mov ds,ax
00007C04 8EC0 mov es,ax
00007C06 E80200 call word 0x7c0b
00007C09 EBFE jmp short 0x7c09
00007C0B B81E7C mov ax,0x7c1e
00007C0E 89C5 mov bp,ax
00007C10 B91000 mov cx,0x10
00007C13 B80113 mov ax,0x1301
00007C16 BB0C00 mov bx,0xc
00007C19 B200 mov dl,0x0
00007C1B CD10 int 0x10
00007C1D C3 ret
00007C1E 68656C push word 0x6c65
00007C21 6C insb
00007C22 6F outsw
00007C23 206567 and [di+0x67],ah
00007C26 677061 jo 0x7c8a
00007C29 6E outsb
00007C2A 7321 jnc 0x7c4d
00007C2C 0000 add [bx+si],al
00007C2E 0000 add [bx+si],al
00007C30 0000 add [bx+si],al
00007C32 0000 add [bx+si],al
00007C34 0000 add [bx+si],al
00007C36 0000 add [bx+si],al
00007C38 0000 add [bx+si],al
00007C3A 0000 add [bx+si],al
00007C3C 0000 add [bx+si],al
00007C3E 0000 add [bx+si],al
00007C40 0000 add [bx+si],al
00007C42 0000 add [bx+si],al
00007C44 0000 add [bx+si],al
00007C46 0000 add [bx+si],al
00007C48 0000 add [bx+si],al
00007C4A 0000 add [bx+si],al
00007C4C 0000 add [bx+si],al
00007C4E 0000 add [bx+si],al
00007C50 0000 add [bx+si],al
00007C52 0000 add [bx+si],al
00007C54 0000 add [bx+si],al
00007C56 0000 add [bx+si],al
00007C58 0000 add [bx+si],al
00007C5A 0000 add [bx+si],al
00007C5C 0000 add [bx+si],al
00007C5E 0000 add [bx+si],al
00007C60 0000 add [bx+si],al
00007C62 0000 add [bx+si],al
00007C64 0000 add [bx+si],al
00007C66 0000 add [bx+si],al
00007C68 0000 add [bx+si],al
00007C6A 0000 add [bx+si],al
00007C6C 0000 add [bx+si],al
00007C6E 0000 add [bx+si],al
00007C70 0000 add [bx+si],al
00007C72 0000 add [bx+si],al
00007C74 0000 add [bx+si],al
00007C76 0000 add [bx+si],al
00007C78 0000 add [bx+si],al
00007C7A 0000 add [bx+si],al
00007C7C 0000 add [bx+si],al
00007C7E 0000 add [bx+si],al
00007C80 0000 add [bx+si],al
00007C82 0000 add [bx+si],al
00007C84 0000 add [bx+si],al
00007C86 0000 add [bx+si],al
00007C88 0000 add [bx+si],al
00007C8A 0000 add [bx+si],al
00007C8C 0000 add [bx+si],al
00007C8E 0000 add [bx+si],al
00007C90 0000 add [bx+si],al
00007C92 0000 add [bx+si],al
00007C94 0000 add [bx+si],al
00007C96 0000 add [bx+si],al
00007C98 0000 add [bx+si],al
00007C9A 0000 add [bx+si],al
00007C9C 0000 add [bx+si],al
00007C9E 0000 add [bx+si],al
00007CA0 0000 add [bx+si],al
00007CA2 0000 add [bx+si],al
00007CA4 0000 add [bx+si],al
00007CA6 0000 add [bx+si],al
00007CA8 0000 add [bx+si],al
00007CAA 0000 add [bx+si],al
00007CAC 0000 add [bx+si],al
00007CAE 0000 add [bx+si],al
00007CB0 0000 add [bx+si],al
00007CB2 0000 add [bx+si],al
00007CB4 0000 add [bx+si],al
00007CB6 0000 add [bx+si],al
00007CB8 0000 add [bx+si],al
00007CBA 0000 add [bx+si],al
00007CBC 0000 add [bx+si],al
00007CBE 0000 add [bx+si],al
00007CC0 0000 add [bx+si],al
00007CC2 0000 add [bx+si],al
00007CC4 0000 add [bx+si],al
00007CC6 0000 add [bx+si],al
00007CC8 0000 add [bx+si],al
00007CCA 0000 add [bx+si],al
00007CCC 0000 add [bx+si],al
00007CCE 0000 add [bx+si],al
00007CD0 0000 add [bx+si],al
00007CD2 0000 add [bx+si],al
00007CD4 0000 add [bx+si],al
00007CD6 0000 add [bx+si],al
00007CD8 0000 add [bx+si],al
00007CDA 0000 add [bx+si],al
00007CDC 0000 add [bx+si],al
00007CDE 0000 add [bx+si],al
00007CE0 0000 add [bx+si],al
00007CE2 0000 add [bx+si],al
00007CE4 0000 add [bx+si],al
00007CE6 0000 add [bx+si],al
00007CE8 0000 add [bx+si],al
00007CEA 0000 add [bx+si],al
00007CEC 0000 add [bx+si],al
00007CEE 0000 add [bx+si],al
00007CF0 0000 add [bx+si],al
00007CF2 0000 add [bx+si],al
00007CF4 0000 add [bx+si],al
00007CF6 0000 add [bx+si],al
00007CF8 0000 add [bx+si],al
00007CFA 0000 add [bx+si],al
00007CFC 0000 add [bx+si],al
00007CFE 0000 add [bx+si],al
00007D00 0000 add [bx+si],al
00007D02 0000 add [bx+si],al
00007D04 0000 add [bx+si],al
00007D06 0000 add [bx+si],al
00007D08 0000 add [bx+si],al
00007D0A 0000 add [bx+si],al
00007D0C 0000 add [bx+si],al
00007D0E 0000 add [bx+si],al
00007D10 0000 add [bx+si],al
00007D12 0000 add [bx+si],al
00007D14 0000 add [bx+si],al
00007D16 0000 add [bx+si],al
00007D18 0000 add [bx+si],al
00007D1A 0000 add [bx+si],al
00007D1C 0000 add [bx+si],al
00007D1E 0000 add [bx+si],al
00007D20 0000 add [bx+si],al
00007D22 0000 add [bx+si],al
00007D24 0000 add [bx+si],al
00007D26 0000 add [bx+si],al
00007D28 0000 add [bx+si],al
00007D2A 0000 add [bx+si],al
00007D2C 0000 add [bx+si],al
00007D2E 0000 add [bx+si],al
00007D30 0000 add [bx+si],al
00007D32 0000 add [bx+si],al
00007D34 0000 add [bx+si],al
00007D36 0000 add [bx+si],al
00007D38 0000 add [bx+si],al
00007D3A 0000 add [bx+si],al
00007D3C 0000 add [bx+si],al
00007D3E 0000 add [bx+si],al
00007D40 0000 add [bx+si],al
00007D42 0000 add [bx+si],al
00007D44 0000 add [bx+si],al
00007D46 0000 add [bx+si],al
00007D48 0000 add [bx+si],al
00007D4A 0000 add [bx+si],al
00007D4C 0000 add [bx+si],al
00007D4E 0000 add [bx+si],al
00007D50 0000 add [bx+si],al
00007D52 0000 add [bx+si],al
00007D54 0000 add [bx+si],al
00007D56 0000 add [bx+si],al
00007D58 0000 add [bx+si],al
00007D5A 0000 add [bx+si],al
00007D5C 0000 add [bx+si],al
00007D5E 0000 add [bx+si],al
00007D60 0000 add [bx+si],al
00007D62 0000 add [bx+si],al
00007D64 0000 add [bx+si],al
00007D66 0000 add [bx+si],al
00007D68 0000 add [bx+si],al
00007D6A 0000 add [bx+si],al
00007D6C 0000 add [bx+si],al
00007D6E 0000 add [bx+si],al
00007D70 0000 add [bx+si],al
00007D72 0000 add [bx+si],al
00007D74 0000 add [bx+si],al
00007D76 0000 add [bx+si],al
00007D78 0000 add [bx+si],al
00007D7A 0000 add [bx+si],al
00007D7C 0000 add [bx+si],al
00007D7E 0000 add [bx+si],al
00007D80 0000 add [bx+si],al
00007D82 0000 add [bx+si],al
00007D84 0000 add [bx+si],al
00007D86 0000 add [bx+si],al
00007D88 0000 add [bx+si],al
00007D8A 0000 add [bx+si],al
00007D8C 0000 add [bx+si],al
00007D8E 0000 add [bx+si],al
00007D90 0000 add [bx+si],al
00007D92 0000 add [bx+si],al
00007D94 0000 add [bx+si],al
00007D96 0000 add [bx+si],al
00007D98 0000 add [bx+si],al
00007D9A 0000 add [bx+si],al
00007D9C 0000 add [bx+si],al
00007D9E 0000 add [bx+si],al
00007DA0 0000 add [bx+si],al
00007DA2 0000 add [bx+si],al
00007DA4 0000 add [bx+si],al
00007DA6 0000 add [bx+si],al
00007DA8 0000 add [bx+si],al
00007DAA 0000 add [bx+si],al
00007DAC 0000 add [bx+si],al
00007DAE 0000 add [bx+si],al
00007DB0 0000 add [bx+si],al
00007DB2 0000 add [bx+si],al
00007DB4 0000 add [bx+si],al
00007DB6 0000 add [bx+si],al
00007DB8 0000 add [bx+si],al
00007DBA 0000 add [bx+si],al
00007DBC 0000 add [bx+si],al
00007DBE 0000 add [bx+si],al
00007DC0 0000 add [bx+si],al
00007DC2 0000 add [bx+si],al
00007DC4 0000 add [bx+si],al
00007DC6 0000 add [bx+si],al
00007DC8 0000 add [bx+si],al
00007DCA 0000 add [bx+si],al
00007DCC 0000 add [bx+si],al
00007DCE 0000 add [bx+si],al
00007DD0 0000 add [bx+si],al
00007DD2 0000 add [bx+si],al
00007DD4 0000 add [bx+si],al
00007DD6 0000 add [bx+si],al
00007DD8 0000 add [bx+si],al
00007DDA 0000 add [bx+si],al
00007DDC 0000 add [bx+si],al
00007DDE 0000 add [bx+si],al
00007DE0 0000 add [bx+si],al
00007DE2 0000 add [bx+si],al
00007DE4 0000 add [bx+si],al
00007DE6 0000 add [bx+si],al
00007DE8 0000 add [bx+si],al
00007DEA 0000 add [bx+si],al
00007DEC 0000 add [bx+si],al
00007DEE 0000 add [bx+si],al
00007DF0 0000 add [bx+si],al
00007DF2 0000 add [bx+si],al
00007DF4 0000 add [bx+si],al
00007DF6 0000 add [bx+si],al
00007DF8 0000 add [bx+si],al
00007DFA 0000 add [bx+si],al
00007DFC 0000 add [bx+si],al
00007DFE 55 push bp
00007DFF AA stosb
(我也不知道要看什么,大家都看看吧)
下一步就是开始调试了。(所以调试界面在哪?)
找了一下午调试窗口没找到,问了一下同学才知道,输入命令:bochs -f bochsrc之后会自动停下来,输入c之后才会跑,而我的bochs输入指令直接就跑出了结果,根本不给调试的机会。
查询网上各种资料无果,(不仅找不到解决方案,连相同案例都没有,我应该是全网首发了hhh)
最终解决方案:
全部删掉(包括bochs2.7),重新安装后离奇事件来了:
还记得我们之前的配置文件吗?
#configuration file for Bochs
###############################################################
# how much memory the emulated machine will have
megs: 32
# filename of ROM images
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/share/vgabios/vgabios.bin
# what disk images will be used
floppya: 1_44=a.img, status=inserted
# choose the boot disk.
boot: floppy
# where do we send log messages?
# log: bochsout.txt
# disable the mouse
mouse: enabled=0
# enable key mapping, using US layout as default.
# keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map
display_library: sdl
重点就在display_library:sdl这一行,当初为了能正确运行而加上去的这一行,在重新安装一遍后会对这一行报错。删掉这一行之后,得到正确的运行状态。
解决掉这一问题之后(这么一个问题你猜猜花了我多久?),终于可以开始我们的调试之路了。
在0X7c00处打上断点,输入c开始运行
输入:dump_cpu查看寄存器信息时再次报错(心里一紧):
syntax error at 'dump_cpu'
查看其他人博客发现应该是版本问题,有人提到在2.6.1版本中这个命令就已经不能用了(有一说一现在用的教材、PPT什么时候能更新啊噶,带来好多不必要的麻烦。)
改用命令:info cpu查看寄存器信息
输入命令:x/64xb 0x7c00,查看线性地址内容
输入命令:n,单步执行
输入命令:trace-reg on,每执行一条指令就打印CPU信息
输入命令:n,单步执行并且打印出CPU信息