real-mode

    -2热度

    1回答

    我正在为MBR(实模式)编写一些程序集。我知道在实模式下,你不能使用32位寄存器,只能使用16位寄存器。 我写了这个代码,它依赖于print_char函数。 mov ecx, MSG write: mov al, [ecx] cmp al, 0x0 je end_print call print_char inc cx jmp writ

    1热度

    1回答

    我在Barry B. Brey的书“THE INTEL MICROPROCESSORS”中找到了它。这是真的吗?但为什么?我知道在实际的8086微处理器的实模式下,没有32位寄存器。那么现在应该对32位寄存器施加相同的限制吗?

    4热度

    1回答

    我正在开发一个简单的BIOS重置器,仅供学习。所以我有主文件,就是菜单,名为Reseta.com,是的,这是一个没有堆叠的小模型。我有一个A.com,代码重置,所以我需要执行A.com与我的主程序Reseta.com,A.com写在DOS的调试,是的,我在Windows 98 ,但该程序将在MS-DOS上运行。我尝试过中断21,像服务4Bh,3DH,但我还没有成功。最简单的方法是如何做到的?只需调

    -1热度

    1回答

    这里是我的代码: data segment gio db 1,2,3,4,5,6 ricxvi db 1 jami db 0 x db ? ends stack segment db 128 dup(0) ends code segment start: MOV AX,DATA MOV DS,AX mov cx, 6 lea si, gi

    2热度

    1回答

    我的目标是使用Int 16指令能够使用箭头键在程序中上下移动,直到我的用户决定按下退出键。我是否在循环中使用以下代码读取多个按键,并在最后添加终止条件或者是否存在某些我缺少的内容? Mov ah,00 int 16

    1热度

    1回答

    在实模式汇编,我用这个代码: mov ah, 0h int 0x16 等待键盘输入。我知道当按下某个键时,关于我按下的键的信息将存储在ah和al寄存器中。例如,当我按下ENTER时,0x0D将被存储在al寄存器中。如果我按退格键,那将是0x08。但这些是我所知道的唯一两把钥匙。 是否有键盘所有按键的列表?例如,当我按'a'时,al/ah值是什么? (ASCII表对此没有资料。)

    0热度

    1回答

    此代码在实模式下工作。 我有这样的例子: 这段代码去0x001FFD50地址。 ... 001F066F: push es 001F0670: push 0FD50 001F0673: retf ^^^^^^ 001F0674: push 00051 ... 在那之后,我有这样的代码: 我需要回到0x001F0674地址。 ... 001FFE91: push 00674

    0热度

    1回答

    我明白应该将堆栈指针对齐到2字节边界。换句话说,不应将SP设置为以0xF结尾的值(或任何其他奇数)。 如果我使用0xFFFF作为SP会发生什么?所有64kB都可用,或少一个字节? 如果我想要一个1024字节的堆栈大小,我应该将SP设置为0x3FF还是0x400?例如是SS(堆栈段)指向要使用的字节? 它们状态为here也不应该使用以0xE结尾的SP地址,“浪费字节在0x..E和0x..F”。怎么来

    1热度

    1回答

    递增64位内存有效地址我使用的中断0x13与扩展驱动器0x42的功能读取从我的扩展驱动器部门在实模式。 我定义DAP是在下面的结构的16个字节: DAP: db 0x10 ; size of DAP db 0 ; Reserved zero dw 0x0001 ; Number of sectors to read dd 0x00000200 ; M

    0热度

    1回答

    我写了一个引导程序和使用NASM汇编(不AS86)编译它,一切都完美的工作。 现在,我想学习如何插入16位C代码到我的应用程序。我从几个SO中读到bcc被推荐用于这种情况,因为它支持8086处理器。 在我的代码与C测试代码组合我面临以下错误:ld86: testasm.o has bad magic number 我我的代码减少为以下: testasm.asm: [bits 16] global