real-mode

    5热度

    1回答

    我从实模式切换到保护模式之前,许多许多的操作系统(以及一些引导程序),它们都禁止中断(cli)看到。为什么我们需要这样做?

    1热度

    2回答

    我有一段代码运行在实模式和printf在屏幕上的消息,我使用DOSBox中0.7作为我的执行环境。下面是代码 jmp 0x7c0:start start: mov ax, cs ; set up segments mov ds, ax mov es, ax mov al,03h mov ah,0 int 10h welcome db "This is insane now" m

    1热度

    2回答

    我在实模式下学习编程重叠,发现这里的SO后这对我来说 相当有用的,但我有一个关于事情是如何在给定的代码工作的一些疑虑 Basic NASM bootstrap ;This is NASM BITS 16 ; 16 bits! start: ; Entry point mov ax, 07C0h ; Move the starting add

    5热度

    3回答

    我从操作系统和硬件角度了解实模式和保护模式之间的区别。 但我想弄清楚程序“知道”真实模式或保护模式是什么?你怎么能在查看源代码/目标代码的时候说它是一个真正的模式程序呢? 寻找答案,我所能想到的是,一个'真实模式'程序使用BIOS子程序和OS子程序,而'保护模式'程序只使用OS子程序。指令代码不同,因为寄存器的操作码不同,偏移地址长度不同。是否还有其他功能可以区分真实和受保护的模式程序?

    1热度

    1回答

    我有点困惑了解8088中用于物理地址计算的段偏移对与32位处理器中段描述符的区别。 任何解释将不胜感激。

    3热度

    1回答

    我对实模式下分段的大小有疑问,因为它们不能超过64K,但可以是less than that.我的问题是这些分段大小和基地址是如何初始化的?就像GDT和LDT处于保护模式一样。 Real mode segments can also overlapped,disjoint or adjacent.就像BIOS有一些特定的东西,如启动代码,视频缓冲等保留区组装程序需要做这样的事情?

    -1热度

    1回答

    我是新来的汇编语言,并试图通过代码的方式来学习它,我发现了一段代码,其表示将二进制到十进制和输出转换为ASCII上筛选。下面是代码 org 100h push ax push cx push dx push si mov dx,10 mov ax,dx ;Assuming number to print starts in DX

    -1热度

    1回答

    我正在写一个函数在我的16位实模式汇编操作系统中打印每个寄存器。我遇到的几个问题: 1移动一个16位寄存器为8位的一个 mov al, bx 这给了我error: invalid combinations of opcodes and operands。无论如何,我可以做到这一点? 2是否将值移入ax影响ah和/或al? mov ah, 0x5 mov al, 0x10 mov ax, 0

    0热度

    1回答

    我在做一个16位的实模式的操作系统,我想传递的用户类型。我所能做的输入命令,但我不知道如何存储生成的字符串,这样以后就可以解析。难道还有比只是把每个字符压入堆栈,然后弹出和扭转他们时,他们希望使用一个更好的办法? 我的主循环: mainLoop: mov bx, s_PROMPT call printStr ; print the 'MOOS> ' prompt

    0热度

    1回答

    我很抱歉,我的问题可能很简单,我只是没有提出解决方案。我试着阅读关于这个问题的文章,教程和以前的问题(试着寻找关于这个主题的以前的帖子,如果有的话,我一定会用错误的词汇来寻找,我真诚地道歉);我对此很新,我一定会错过一些小而简单的东西。 我写汇编和我的代码工作近跳跃(如下面的指示得到执行) org 0x500 jmp main %include "smallFile.inc" main: