首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在FreeDOS中编写内联程序集

如何在FreeDOS中编写内联程序集
EN

Stack Overflow用户
提问于 2013-07-12 09:30:51
回答 1查看 1.1K关注 0票数 1

我正在尝试编写以下程序,以便在虚拟机中使用FreeDOS转储interrupt vector table。我知道DEBUG将允许我编写汇编程序,但是我如何创建以下IVTDUMP.COM文件,保存并运行它?

注意:如果可能的话,我想试着直接从FreeDOS做这一切。我尝试使用EDIT命令,但是它出错了,我非常确定我遗漏了一些东西。

代码语言:javascript
复制
for 
( 
   address=IDT_255_ADDR;
   address>=IDT_001_ADDR;
   address=address-IDT_VECTOR_SZ,vector--
)
{
   printf("%03d   %08p   ",vector,address);

   __asm
  {
     PUSH ES
     MOV AX,0
     MOV ES,AX
     MOV BX,address
     MOV AX,ES:[BX]
     MOV ipAddr,AX
     INC BX
     INC BX
     MOV AX,ES:[BX]
     MOV csAddr,AX
     POP ES
   };
   printf("[CS:IP]=[%04X,%04X]\n",csAddr,ipAddr);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-12 17:58:06

像for、address和printf这样的东西不是程序集的一部分。您必须将其重写为实际的汇编代码,或者将想要使用的宏和汇编器复制到freedos环境中。

如果您想使用freedos中包含的debug,可以使用a命令开始编写汇编指令,使用n命令提供名称,使用w将代码写入文件。

代码语言:javascript
复制
C:\debug
-a
06BC:0100 int 20
06BC:0102
-n ivtdump.com
-rcx 2
-w
Writing 0002 bytes.
-q

C:\

这个示例程序只通过int 20退出程序( rcx后面的2表示要写入磁盘的程序的长度)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17609941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档