当前位置: 首页 > 知识库问答 >
问题:

使用变量的装配

许毅
2023-03-14

我试图使文本屏幕打印'h',这是存储在一个变量。我在用NASM。x86保护模式,一个从头开始的内核。

DisplayMessage:
        ;mov byte[Color], 0xF
        ;mov CFC, EAX;
        ;mov byte[Color], 104
        ;push 104
        ;mov byte[esi], Msg
        ;lodsb
        mov ebx, Msg
        add ebx, 4
        mov [Msg], eax
        mov byte[0xB8000], Msg
        ;mov byte[eax], Color
        ;pop byte[0xB8000]
        ;mov byte[0xB8000], byte Color
        ;mov byte[0xB8000], 0xB500000;
        ;Now return
        ret
EndCode:
Msg: db 104

共有1个答案

岳和泽
2023-03-14
    mov ebx, Msg ; this loads ebx with the address of Msg, OK
    add ebx, 4 ; this increments the address by 4, OK, but why?
    mov [Msg], eax ; this stores eax into the first 4 bytes of Msg, OK, but why?
    mov byte[0xB8000], Msg ; this writes the least significant byte of the
                           ; address of Msg to the screen, not OK.
                           ; Does not make any sense.

为什么不只是?:

mov al, [Msg]
mov [0xB8000], al

这应该在屏幕左上角写入msg('h'有ASCII代码104,正确)的第一个字符,当然,如果您的数据段在其段描述符中的基址为0,并且org是正确的。

 类似资料:
  •  KAG 中所谓的变量其实就是、 记录某些数据的东西  而已。  但是呢、KAG 因为是基于 TJS2 这一脚本语言的系统、KAG 的变量实际上继承了 TJS2 变量的功能,可以发挥很强大的作用。(译注:口胡,给我一个能保存的数据类再说……)  这个初级教程只讲了些基本的用法、像 KAG 内部的方法、属性之类的操作、使用吉里吉里本体功能之类的没有详细说、完全是一片泥沼的状态、容易掉坑的请注意(笑)

  • 问题内容: 我有几个字段,每个字段都是这样的: 通过使用带有计数器的循环,我希望能够说出fieldx。其中x是该循环中计数器的值。这意味着如果我的数组中有6个条目,则将为fields1-field6提供值。 是否可以使用fieldx? 问题答案: 您可以使用反射来完成此操作,但是通常最好在数组中声明字段。代替: 你可以这样做: 然后,您可以遍历数组来设置值:

  • 在 Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”,“命令”或是 Makefile的其它部分中。变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有“:”

  • sass让人们受益的一个重要特性就是它为css引入了变量。你可以把反复使用的css属性值 定义成变量,然后通过变量名来引用它们,而无需重复书写这一属性值。或者,对于仅使用过一 次的属性值,你可以赋予其一个易懂的变量名,让人一眼就知道这个属性值的用途。 sass使用$符号来标识变量(老版本的sass使用!来标识变量。改成$是多半因为!highlight-color看起来太丑了。),比如$highli

  • 在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中 执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其 值。在Makefile中,变量可以使用在“目标”,“依赖目标”, “命令”或是Makefile的其它部分中。 变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有

  • 主要内容:1. 定义变量,2. 为变量赋值在 MySQL 中,除了支持标准的存储过程和函数外,还引入了表达式。表达式与其它高级语言的表达式一样,由变量、运算符和流程控制来构成。 变量是表达式语句中最基本的元素,可以用来临时存储数据。在存储过程和函数中都可以定义和使用变量。用户可以使用 DECLARE 关键字来定义变量,定义后可以为变量赋值。这些变量的作用范围是 BEGIN...END 程序段中。 下面将讲解如何定义变量和为变量赋值。 1.