TC3.0或BC中如何使用32位指令

beervista 2007-04-27 10:41:09
哪位大侠有什么好办法,比如我想执行mov eax,0h,TC的编译器肯定编译不过去,现在是直接拿机器码向程序里干的,还有别的方法吗
...全文
493 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lw549 2007-05-29
  • 打赏
  • 举报
回复
gz,很久没用bc31了,等个结果,hoho.
MODICON 2007-05-28
  • 打赏
  • 举报
回复
BC++ 3.1是什么软件呀?别笑话,刚接触编程不到一年。
Jiessie 2007-05-09
  • 打赏
  • 举报
回复
我当然是用bc++ 3.1的集成环境编译的。。。。
对了,好像要改很多编译选项。。。
  • 打赏
  • 举报
回复
generate assembler source是通过外部汇编器汇编成obj再连接的,其中的basm部分是原样复制的,没有生成目标代码。
你把bin目录下的tasm.exe移走或者改名它就编译不了了。
BC++ 3.1自身的编译器是不支持在basm中嵌入32-bit指令的。


Jiessie 2007-05-09
  • 打赏
  • 举报
回复
2.1.3 The Intel386™ Processor (1985)
The Intel386 processor was the first 32-bit processor in the IA-32 architecture family.

Borland C++ Version 3.1 Copyright (c) 1990, 1992 by Borland International, Inc.
我们设想,Borland的辉煌就是在bc3.1时期,离386 CPU出来5年的了,可以肯定,当时的最好的编译器,肯定支持32bit,并且还支持Windows DLL,所以,剩下的事情就是怎么去使用BC31了。
Jiessie 2007-05-09
  • 打赏
  • 举报
回复
你要想想,BC3.1出来是哪一年,什么环境。386CPU出来是哪一年,就可以推论,BC31肯定支持32bit code..
Jiessie 2007-05-09
  • 打赏
  • 举报
回复
以前试了很多次才找到的....
都记不得了,好像跟下面2个有关。
Alt O C C G
Alt O C A 3
  • 打赏
  • 举报
回复
什么选项啊?你说说。:)
Instruction set设置为80386对BASM是没有影响的。
  • 打赏
  • 举报
回复
你用BC++ 3.1去编译试试,
莫非你的BC++ 3.1与众不同?:)
Jiessie 2007-05-08
  • 打赏
  • 举报
回复
下面这些代码都可以在 BC31中编译。。。
还有不支持的32bit的asm???
asm {
push ds
push es
CLI //Disable inerrupts
} // Include NMI.
asm{ // The right Code is Real, But BC++ s Linker NOT
// Work with 32bits Code.
mov ecx, ds
shl ecx, 4
MOV word ptr pdescrtmp[0],(4*8-1)
xor eax, eax
MOV AX,offset GDTTable
// MOV AX,offset GDT-Table
add eax, ecx
MOV dword ptr pdescrtmp[2], eax
//GDTR Base high16 bits
LGDT qword ptr pdescrtmp //Load GDTR
}
U16 wSelector;
if (bFlag)
wSelector=0x10;//
else
wSelector=0x18;
asm{
mov DX,wSelector // The Data32 Selector
mov eax, cr0
mov ebx, eax
OR AX,1
mov cr0, eax
//MOV CRO,EAX // Set Protection enable bit
JMP Flsuh
} //Clear machine perform cache.
Flsuh : // Now In Flat Mode, But The CS is Real Mode Value.
asm { //And it s attrib is 16Bit Code Segment.
mov eax, ebx
mov fs, dx
mov ds, dx
mov es, dx
//Load FS Base=0 Size=4G now
mov cr0, eax
//Return Real Mode.
// LIDT qword ptr OldIDT //LIDT OldIDT //Restore IDTR
STI // STI //Enable INTR
pop es
pop ds
push word ptr 0
pop fs
}
  • 打赏
  • 举报
回复
非也。
bc++ 3.1并不支持32-bit的BASM。
Jiessie 2007-04-29
  • 打赏
  • 举报
回复
bc31 本来就支持.
  • 打赏
  • 举报
回复
使用外部汇编器生成obj再连接到程序里。
注意外部汇编程序的段要use16。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧