首页
社区
课程
招聘
[旧帖] [求助]一个在PC裸休上显示字母'A'的程序的问题 0.00雪花
发表于: 2012-1-13 20:33 1283

[旧帖] [求助]一个在PC裸休上显示字母'A'的程序的问题 0.00雪花

2012-1-13 20:33
1283
我想使用BIOS调用来显示一个‘A’,写了以下代码:
;文件3.asm
code segment
assume cs:code
start:
xor  ax,ax   ;ax清0
mov  ss,ax   ;ss清0
mov  sp,7c00h  ;ss:sp=0000:7c00
sti      ;开中断
push ax
pop  es
push ax    ;es=0
pop  ds    ;ds=0
cld      ;设置正向串操作

show:   
mov     ah,0fh
int     10h    ;取当前显示页
mov     ah,0eh
mov  al,41h   ;显示字符   'A '   (41h)
int     10h
   
sleep:
nop
jmp sleep
   
org 1FEh
endSign db 55h,0AAh
   
code ends
end start
使用MASM编译出3.exe,在windows能正常运行,我使用工具生成了bin文件,bin文件的二过制文件为:
33 C0 8E D0 FB 50 07 50 1F FC B4 0F CD 10 B4 0E
B0 41 CD 10 90 EB FD 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
......
00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA
我使用VMware建立了一个LabVM空机器,上面挂了一个虚拟硬盘A。再建了一个XP的虚拟机,装了一个XP系统,并把LabVM的虚拟硬盘挂到该XP虚拟机里作为第二个硬盘。最后使用磁盘扇区读写工具把BIN文件写到第二个硬盘的第一个分区里。写成功能,关掉XP虚拟机,再去运行LabVM,运行后没有出现'A'。弄了好久还是没能把这个A显示出来,请各位朋友帮帮忙,我的这个小小的实验问题出在哪里了?是程序的问题还是实验环境的问题?
说明:
实验相关的文件在附件的lab3.rar中,3.asm是源码文件,3.exe为编译出来是exe文件,该文件执行正常,3.bin为去掉exe头的二进制文件。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
大侠门,帮帮忙哦,谢谢大家
2012-1-13 20:40
0
雪    币: 705
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
写到mbr里了? 用bochs吧,按照 《自己动手写操作系统》里步骤来
2012-1-13 20:45
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我写到了mbr里了,我用工具读出来对比二进制数据是正确的
2012-1-13 21:06
0
雪    币: 705
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
那还是用yasm吧,直接编译成bin,我在win下用nasm编译出来的代码有些问题
2012-1-13 21:25
0
雪    币: 768
活跃值: (530)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
6
是exe2bin的过程有问题吧? 试试用Tdebug测试下。很久以前搞过,现在都忘记了。。。
记得当时exe2bin的过程是手工用Hex工具,配合着TDebug进行的,然后把bin写入MBR,
可以完成汉字的显示呢:)
2012-1-13 22:14
0
游客
登录 | 注册 方可回帖
返回
//