社区
汇编语言
帖子详情
求一个VC6.0下的HELLO WORLD,回答好了加100分,不够还可以另发帖再加分
cxdzxc
2009-03-11 11:40:35
要求C代码,非C++,程序需要运行在DOS下,先在实模式下显示一行 HELLO WORLD_16,然后通过内嵌汇编(不用汇编
最好),或者纯C(如果这样可以的话)的方式进入32位保护模式,显示一行 HELLO WORLD_32,然后返回到DOS,显示
一行RETURN DOS
...全文
710
29
打赏
收藏
求一个VC6.0下的HELLO WORLD,回答好了加100分,不够还可以另发帖再加分
要求C代码,非C++,程序需要运行在DOS下,先在实模式下显示一行 HELLO WORLD_16,然后通过内嵌汇编(不用汇编 最好),或者纯C(如果这样可以的话)的方式进入32位保护模式,显示一行 HELLO WORLD_32,然后返回到DOS,显示 一行RETURN DOS
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
29 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
光宇广贞
2009-05-11
打赏
举报
回复
怎么进实模式?
renzhestudio
2009-05-10
打赏
举报
回复
学习!高手真多!
xtdumpling
2009-04-02
打赏
举报
回复
回26#:
CPU模式 操作系统
实模式 不等于 DOS
保护模式 不等于 Windows
LZ的意思是程序里进行模式切换,如14#
zpxfzp
2009-04-01
打赏
举报
回复
[Quote=引用楼主 cxdzxc 的帖子:]
要求C代码,非C++,程序需要运行在DOS下,先在实模式下显示一行 HELLO WORLD_16,然后通过内嵌汇编(不用汇编
最好),或者纯C(如果这样可以的话)的方式进入32位保护模式,显示一行 HELLO WORLD_32,然后返回到DOS,显示
一行RETURN DOS
[/Quote]
实模式+保护模式? 你要在程序中切换Dos6.22和Windows吗?干嘛用?
cxdzxc
2009-03-20
打赏
举报
回复
郑重声明,这个图是VMWARE虚拟机的截图(虽然还不能算是真正的纯DOS,但已经模拟得很好了,在纯DOS里运行的效果与在VMWARE里运行的效果没有什摸不同),并非是XP里的,运行在RING3级的V86的那个虚拟DOS,怎摸总是有一些人认为我的DOS是运行在RING3级的V86呢,很明显都是没好好看我写的汇编代码就在那自以为是了,狂汗中!!!另对保护模式还不了解的可以先到这里看看
http://biosos.5d6d.com/thread-12-1-1.html
autumn1225
2009-03-20
打赏
举报
回复
驱动的管理,可以使用SCM管理器,不过,我也不会.
理论上,可以在RING3,切换到RING0,当然切出是比较简单.修改CR0值,再加JMP.
cxdzxc
2009-03-19
打赏
举报
回复
9楼---mnzn2530---的楼号怎摸没有了,害我不能把分加给他,CSDN最近问题多多啊
vamking_boy
2009-03-16
打赏
举报
回复
up,学学
beijingbeerman
2009-03-16
打赏
举报
回复
make一下
Gsky33
2009-03-16
打赏
举报
回复
有时间我来试试
cxdzxc
2009-03-16
打赏
举报
回复
我把汇编的代码帖到14楼了,请懂C的高手帮我转成C语言形式的,或者C内嵌汇编形式的,感激不尽了!!!---如果测试能成功运行立即加100分,或者另开帖再加分都可以的!!!
wxgiter
2009-03-16
打赏
举报
回复
UP~~~~
Guilty
2009-03-15
打赏
举报
回复
我那时用的NASM,16位32位可以混着来。
Guilty
2009-03-15
打赏
举报
回复
我以前做过一个,汇编写的引导扇区,转入32位模式后载入一个PE格式的WIN32程序,重定位并且找到入口执行,只是不支持WIN32 API,提供一个字符模式显示的API。不大,10天写了不到一千行程序,多数时间是学习看资料。
目的是摆脱WINDOWS和硬盘执行我用VC6编译的图象识别程序,实现了。
cxdzxc
2009-03-15
打赏
举报
回复
LGDT qword ptr cs:GDTR ;masm5.0在这里要用qword,因为MASM5.0有这个BUG,其它MASM6.XX要用fword
cxdzxc
2009-03-15
打赏
举报
回复
.386P
CSEG16 SEGMENT USE16
ASSUME CS:CSEG16
ORG 100H
START: cli
mov bx,offset cs:xianshixinxi_16
mov di,20*2
call xianshi_16
xor eax,eax
mov ax,cs
mov word ptr cs:seg_offset_16+2,ax
shl eax,4
xor ebx,ebx
mov bx,SEG CSEG_P32
SHL EBX,4
mov word ptr cs:cs_SEL32+2,bx
shr ebx,16
mov byte ptr cs:cs_SEL32+4,bl
xor ebx,ebx
mov bx,SEG CSEG_P16
SHL EBX,4
mov word ptr cs:cs_SEL16+2,bx
shr ebx,16
mov byte ptr cs:cs_SEL16+4,bl
xor edx,edx
mov dx,offset cs:gdt0
add eax,edx
mov dword ptr cs:GDTR+2,eax
LGDT qword ptr cs:GDTR
mov eax,cr0
or al,1
mov cr0,eax
db 0eah
seg_offset_16_P32: dw 0
dw offset cs_SEL32 - offset gdt0
xianshixinxi_16_dos_prog:
mov bx,offset cs:xianshixinxi_16_dos
mov di,80*2*3+20*2
call xianshi_16
return_dos:
mov ah,4ch
int 21h
xianshi_16:
mov ax,0b800h
mov es,ax
mov dh,0F4h
XIANSHI_16_1:
mov dl,cs:[bx]
cmp dl,0
je xianshi_over_16
mov word ptr es:[di],dx
add di,2
inc bx
jmp XIANSHI_16_1
xianshi_over_16: ret
;--------------------------------------------------------------------------------------------------------
gdt0: DQ 0
cs_SEL32: dw 0ffffh,0000,9a00h,00CFh
cs_SEL16: dw 0ffffh,0000,9a00h,0080h
DATA_SEL32: dw 0ffffh,0000,9200h,00CFh
GDTR: DW $-gdt0-1,0,0
;----------------------------------------------------------------------------------------
xianshixinxi_16 db "HELLO WORLD_DOS_16",0
xianshixinxi_16_dos db "RETURN DOS---QQ GROUP:67286087;QQ:750347821;EMAIL:750347821@QQ.COM NAME:CXDZXC Address:LANZHOU DATE:2009-3-15 ",0
;----------------------------------------------------------------------------------------
CSEG16 ENDS
;-------------------------------------------------------------------------------------------------------
CSEG_P32 SEGMENT USE32
assume CS:CSEG_P32
MOV dx,DATA_SEL32 - gdt0
MOV es,dx
mov edi,0b8000h+80*2*1+20*2
XOR EBX,EBX
mov Ebx,offset cs:xianshixinxi_P32
mov dh,0F4h
xianshi_P32:
mov dl,cs:[ebx]
cmp dl,0
je xianshi_over_P32
mov word ptr es:[edi],dx
add edi,2
inc ebx
jmp xianshi_P32
xianshi_over_P32:
db 0eah
SEL_offset_P32_P16: dw 0,0,offset cs_SEL16 - offset gdt0
;----------------------------------------------------------------------------------------
xianshixinxi_P32 db "HELLO WORLD_P32",0
;----------------------------------------------------------------------------------------
CSEG_P32 ENDS
;-------------------------------------------------------------------------------------------------------
CSEG_P16 SEGMENT USE16
assume CS:CSEG_P16
mov edi,0b8000h+80*2*2+20*2
XOR EBX,EBX
mov bx,offset cs:xianshixinxi_P16
mov dh,0F4h
xianshi_P16:
mov dl,cs:[ebx]
cmp dl,0
je xianshi_over_P16
mov word ptr es:[edi],dx
add edi,2
inc ebx
jmp xianshi_P16
xianshi_over_P16:
mov eax,cr0
AND al,0FEH
mov cr0,eax
db 0eah
seg_offset_16: dw offset xianshixinxi_16_dos_prog,0
;----------------------------------------------------------------------------------------
xianshixinxi_P16 db "HELLO WORLD_P16",0
;----------------------------------------------------------------------------------------
CSEG_P16 ENDS
END START
dididu1515
2009-03-15
打赏
举报
回复
这题,我不会。编程傻瓜--汇编 V1.0b
http://www.dai-ma.com/code/pg/huibian/14443763097.html
这程序就是从DOS模式启动,转到Windows的,大家可参考一下。
czc1009
2009-03-15
打赏
举报
回复
看晕了!基础太差了!
学习了!
nwao7890
2009-03-13
打赏
举报
回复
我晕,这么难的题,MARK!
cxdzxc
2009-03-12
打赏
举报
回复
非常感谢楼上的两位,我再看看有没有更好的回答,另希望各位高手能加入到我的群67286087里来,将不胜荣幸
加载更多回复(9)
vc6.0
mfc
hello
word
vc6.0
用mfc搭建最简单的小程序 第
一个
程序
hello
world
!
VC6.0
写的
一个
简单DDraw入门程序
本人用
VC6.0
写的
一个
简单DDraw入门程序,
hello
world
,大部
分
有注释,简单容易理解
VC++6.0 DOS界面五子棋
VC++6.0 DOS界面五子棋,“
hello
world
”工程里写的。
VC
hello
world
VC6.0
hello
world
给初学C语言的人的第一堂课 给初学C语言的人的第一堂课 给初学C语言的人的第一堂课
Visual C++6.0用户界面制作技术与应用实例 PDF格式
Visual C++集成开发环境是当今最流行的可视化编程工具之一。本书运用大量实例,循序渐进,深入浅出地向读者展示了如何利用Visual C++ 6.0进行用户界面制作,主要讨论了如何处理鼠标、键盘以及计时器消息,如何制作...
汇编语言
21,458
社区成员
41,600
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章