您好我正在尝试学习汇编语言,我知道在MS-DOS操作系统中,.COM
程序是受支持的,并且被加载到100h
的内存中,不是吗?第一个1k
字节是IVT或中断向量表,它是一个中断列表,不是吗?所以在MS-DOS中如果我们想要询问用户的输入,我们首先将01
移动到AH
注册为MOV ah, 01
并调用中断INT 21h
,我不是知道这是否会在DOS上工作,我从未尝试过DOS虚拟机或类似的应用程序,我不想要DOS程序我只想要一个控制台窗口,要求用户输入...
我刚刚进入汇编编程,在Windows上没有找到完整的教程,或者不只是一个显示使用中断的东西,到处都有MASM与windows.inc
库和C standard libs
一起使用,我不想浪费我的时间来学习它们,因为在学习汇编编程之后我想学习编写启动程序,它不会粘在一个操作系统上,而我想使用Interrupts的原因仅仅是为了学习目的,这意味着只是为了学习汇编语言,目前我知道的指令非常少MOV
ADD
SUB
INC
INT
& DEC
并且对寄存器一无所知或更不了解,因此,凭借这些有限的能力,我无法编写启动程序,因此我试图在Windows上学习或练习汇编但是有中断,因此不想使用那些我的应用程序中的预定义库,并且只想使用来自IVT的中断并切换到BIOS中断,用于引导程序。
我在一个论坛上听说微软将Windows IVT从公众手中隐藏起来,因为他们希望自己的API变得流行,这是真的吗?这意味着我无法使用中断来处理Windows中的I / O?因为没有这样的纪录片,如果没有和它一起发布NASM的例子,请参考任何在线/离线指南,我的上一个请求请告诉我如何转换MASM写的NASM源代码,我的意思是它们之间有什么区别,简而言之,我有两个请求和一个问题如下:
最后一个......
先谢谢!!
答案 0 :(得分:2)
前1k字节是IVT或中断向量表......
现代CPU有两个(在64位CPU甚至三个CPU的情况下)操作模式:"实模式"和#34;保护模式"。
当CPU启动并在MS-DOS中时,CPU运行在"实模式"。当Windows运行时,CPU运行在"保护模式"。在这种模式下,中断系统的工作方式完全不同于真实模式"。
无法直接访问IVT,无法从其他任务访问属于任务的内存。
Windows中控制台I / O的中断是什么?
Windows NT,32位,使用中断1Eh。但是,其他Windows版本(例如Windows 9x)使用了另一种进入操作系统的方法。
据我所知,64位版本的Windows也不使用中断。
没有Windows程序(旧的16位Windows程序除外)直接使用中断。
将Windows IVT从公众手中隐藏起来,因为他们希望自己的API变得流行,这是真的吗?
它们隐藏了中断号码,因为它们仅在某些Windows版本中可用。
编写适用于当前所有Windows版本的程序的唯一可能性是使用Windows API。
我不想浪费时间学习它们
在这种情况下,不要浪费时间为Windows编写汇编程序!如果您对编译器开发感兴趣,那么这样做才有意义。
使用一些虚拟机工具(Bochs,VMware,...)并开始编写"启动程序"现在或使用MS-DOS模拟器并为MS-DOS编写汇编程序。
Windows的汇编程序的唯一用途是32位汇编程序比16位汇编程序(MS-DOS和#34;启动程序"所需)更容易学习。为Windows编写汇编程序可能有助于学习......