当前位置: 首页 > 网络应用技术

三个作业的详细说明

时间:2023-03-07 00:02:37 网络应用技术

  本文记录了大会课程留下的三项作业,如下所示。

  在此之前,让我们先谈谈MASM和DOSBOX。

  时代正在进展,课程仍在8086年。我不知道它可以成为头脑,或者是经典的事情,永远不会过时。

  您是否有这样的问题,为什么需要在DOSBox上写的MASM代码上运行?为什么不直接编译,链接,运行?您必须获得DOSBOX吗?

  实际上,这还可以,但是没有人告诉您,最经典的汇编书《汇编语言》王尚,最终的示例需要在DOS系统上运行,如果您想运行,您需要成为您自己。安装真实的DOS系统或DOSBox Simulator,因此,8086,8086的原因是CPU处于真实模式。这种固体模式是相对保护模式。当8086问世时,没有真正的模式概念。在80286年,出现80286,因为他的工作模式与以前的工作模式不同,以区分旧CPU的工作模式,因此称为8086的保护模式。CPU仍将在实际模式下运行。这也是为了兼容。要切换到保护模式,需要自行控制它。

  仍然遵循句子,如果您不会说话不清楚,请不要说。这里的差异不是您可以用几句话说的,但是现在我们只需要知道为什么需要DOSBOX,因为我们正在研究8086的汇编,我们必须正确运行。书中的代码需要一个环境实际模式,然后是两个选择,要么独自安装DOS系统,要么通过软件进行模拟。该软件是DOSBOX。

  另一个原因是我们的教科书中有很多示例,例如将BIOS中断或DOS中断以完成一些功能。

  什么称为BIOS中断或DOS中断?

  如果您是JS开发人员,则可以理解,当您需要打开新窗口时,请致电窗口。

  如果您是Java开发人员,则可以理解,当您需要删除文件时,需要删除方法。

  如果您是开发人员,则可以理解,当您需要输出字符时,需要打印方法。

  BIOS中断,DOS中断是事先函数的一部分。当您需要调用时,请通过指令致电,该指令称为中断调用或函数调用。您需要调用BIOS中断。该方法已完成,因为保护模式不能用于使用BIOS中断,而BIOS中断只能在实际模式下工作。如果DOS中断,则无法在DOS系统中进行操作。

  它们提供了许多功能,每个函数具有唯一的数字,称为中断号码,例如,这里的10H中断由BIOS提供,称为视频服务,并且10H中断已细分了许多功能。输出字符,您需要将AH寄存器设置为0EH,然后通过ASCII告诉BIOS到要输出的字符,但是此函数编号仅允许单个字符的输出,并且您希望在A中输出一个句子时间,您可以,您以AH为13H,这需要参考手册。我找到了三篇好文章。如下所示,详细介绍了BIOS中断和DOS中断呼叫。

  DOS中断和BIOS中断可以在功能强大的DOSBOX中模拟,这也限制了我们的某些代码在DOSBOX中运行。当然,主要原因是了解上一个CPU物理地址的计算方法和方法,以及如何计算先前的CPU物理地址以及如何计算先前的CPU物理地址以及如何计算先前的CPU物理地址以及如何计算计算先前的CPU物理地址以及如何计算先前的CPU物理地址以及如何计算先前的CPU物理地址以及如何计算先前的CPU物理地址以及如何计算先前的CPU物理地址以及如何计算先前的CPU物理地址地址以及如何计算先前的CPU物理地址以及如何计算先前的CPU物理地址以及如何计算先前的CPU物理地址以及如何计算先前的CPU物理地址以及如何计算先前的CPU物理地址和计算方法和CPUDOS,BIOS中断等物理地址的方法。

  使用MASM开发应用程序相对简单。MASM提供了大量的伪指导,例如仅以.if等高级语言可用的判断说明。这不在其他汇编中,例如nasm.trupp或dos中断以完成这三个作业,因此您不会讨论Windows在Windows下的开发和应用。有关详细信息,您可以参考“基于X86处理器的边缘语言”的书,并且许多Windows工具也由MasM.Unctions(例如打印)开发,不能用于中断或BIOS中断。您需要使用Windows提供的API,在Linux下,将使用80H中断。

  目前,讨论技术中的中断更多地讨论了Linux下的80H中断。

  我们都想开发在物理机器上运行的程序,而不是整天在模拟器中播放。因此,当我们完成这三个操作时,我们可以使用MASM + DOSBOX。,NASM也是一个compirator。与MASM相同,QEMU是一个模拟器,可以模拟整个计算机(CPU,内存等)以运行代码。通常,我们在开发操作系统时使用它。这两个组合被调试。该程序可以直接运行而无需操作,但这也需要了解操作系统的启动过程。

  如果您正在学习,则更容易使用NASM + QEMU,与此同时,它对操作系统的启动也有更深入的了解,但是没有办法以这种方式调用DOS中断,因为我们没有DOS环境,但您可以称为BIOS中断。实际上,这已经足够了。您不能总是在Xuetong DOS中断之后编写程序。如果您有两种可能浪费的生命,建议您使用更重要的学习BIOS中断。

  因为每个程序员都有一个梦想,编写操作系统,无论操作系统能做什么,它都会使您加深计算机的印象。这个过程与BIOS中断密不可分。第一步是处理BIOS中断。

  那么,为什么不使用MASM + QEMU?因为MASM限制仅支持运行,因此无法直接输出纯二进制内容。MASM编译的文件只能通过窗口识别。NASM可以编译纯二进制内容,可以通过机器直接执行,而无需操作系统。

  nasm也更简单。如果您使用MASM,则将在开始时编写一些指令,NASM可以直接在第一行中编写核心代码。

  这两个装置非常简单。像微信安装一样,没有其他额外的选择。接下来是一路很好,它将不会被证明。

  让我们看下面的第一个作业。

  这更容易做到,首先查看整体代码。

  大约30行,第一行和最后两行是固定的。没有必要理解它。这是操作系统的开始。中间是核心代码。如果运行,请使用以下两个命令。

  然后,您将看到1-9的周期打印。

  让我们看看以下几行。

  当您看到时,直接查看手册,发现当AH 15岁时,中断后完成了什么,并且在找到相应的说明后,您会发现这是为了获得视频模式。然后,当AH为0时,在中断发生后,设置了视频模式以设置视频模式。您不明白吗?这是正确的。这首先需要视频模式,但是这样做的原因只是要清除屏幕,因为获得当前的视频模式,可以在设置视频模式时设置屏幕的效果。

  (在登记册中,在大会中调用中断后返回的信息)

  以下是打印1-9。数字ASCII可以基于48作为基本值,ASCII为48表示0,那么1的ASCII为48+1 = 49。

  然后查看以下内容,让我们将CX设置为9,CX可以与循环指令一起使用,该功能是控制循环的数量。当执行循环指令时,如果CX大于0,则跳到指定的标签并将BX的角色设置为1至1YES,请记录要打印的当前数字,1表示从1打印。

  这样,字符1的打印就完成了。以下是一个周期,但是CPU正在迅速运行。非常有必要做出等待功能。最基本的方法是让CPU通过大量的周期花费一段时间。进行等待,但是BIOS提供了等待中断的等待。我们不必自己写。当AH为86H时,当打断中断时,BIOS将等待CX+DX中的值(此值在等待时间)。为什么是86H?也许作者也喜欢西方的旅程。

  第一个问题是完成的。

  这也相对简单,首先查看整体代码。

  但是,此代码无法完成资本的输入资本,自动输出,亚种和自动输出,只是输入输入的内容,然后输出什么是原始步骤。

  调用上述代码后,如果按下键盘,则AL寄存器是此字符的ASCII代码。目前,它可以直接输出。另外,还有一个02h函数。他的角色是获得键盘徽标。这些徽标可以是Cap Lock键,CRTL键等。如果按下您,相应的徽标为1。

  如果要输入小写字母a,则输出a = a,输入资本a,然后输出a = a,这需要al的范围。字母在中间的65-90至32之间每个角色的。

  因此,您可以做到这一点,并判断Al的范围。如果它大于或等于97,则只需确定小写字母的输入,然后将Al减为32输出。无验证。

  如果不少于97,我们确定已经输入了大写字母并将Al添加到32输出中。

  以下是渲染。

  有必要在此处测试级别。BIOS不提供此类功能。我们需要根据相应的规则来编写它,但是由于转换太多,例如2至10之间,在10到十六进制之间,在2至Hexades之间等等,因此这里只有10个骑行2效果。

  10-in制作方法是更不用说。它相对简单,即删除剩余数字,所有剩余数字的结束是最终结果。

  实际上,这也很简单,让我们看以下整体代码。

  我将上述代码放在以下地址中。

  这三个代码可以在没有操作系统的情况下运行,这也非常简单,其中一分之一。

  第一个编译

  写信给U磁盘部门

  然后将BIOS启动方法设置为U磁盘并将其设置为旧方法。

  重新启动后,您可以看到效果。

  但是,对于Windows朋友,您无法使用DD命令。如果您真的想这样做,则可以下载HXD工具。

  原始:https://juejin.cn/post/7100896672015712263