第1章 打印启动信息

显示器I/O知识:

显存地址是 0xb8000,屏幕是80*25,每个位置由两个字节决定。第一个字节决定所显示的字符,如0xb8000。第二个字节决定怎么显示字符(背景颜色,前景颜色),如0xb8001。


汇编命令知识

cld: 方向标志置0,si和di 增1或增2;

std: 方向标志置1,si和di 减1或减2


串传送指令(数据从A内存到B内存)

cld
movsb   # ds:[si] -> es:[di], ++si, ++di 
movsw   # ds:[si] -> es:[di], si+=2, di+=2

串存储指令(数据从寄存器到内存)

cld
stosb  # al -> es:[di], ++si
stosw  # ax ->es:[di], si+=2

串读取指令(数据从内存到寄存器)

cld
lodsb # ds:[si] –> al, ++si
lodsw # ds:[si] –> ax, si+=2

重复前缀指令

rep: 用在movs、stos、lods指令前,每执行一次指令,cx减1;直到cx = 0,重复执行结束。


下面这段代码的作用是把内存中的字符串复制到0xb8000地址上

   
    .text
    .global start
    .code16
start:
    jmp $0x0, $code
msg:
    .string "1kos booting......\x0"
code:
    movw    $0xb800,%ax        #显存地址在0xb8000
    movw    %ax,    %es        
    xorw    %di,    %di        #es:di = 0xb8000
    xorw    %ax,    %ax
    movw    %ax,    %ds        #ds:si = msg
    movw    $msg,   %si
    cld                #si和di自增
    movb    $0x07,  %ah        #字符属性:黑底白字

loop:
    cmp        $0x0,   (%si)
    je        end
    lodsb            #ds:[si] -> al, ++si
    stosw            #ax -> es:[di], di += 2  #al=字符 ah=属性
    jmp        loop

end:
    jmp        end
 



### 关于ROS2第一入门教程 #### ROS2简介与安装环境配置 在学习ROS2之前,了解其基本背景和发展历程有助于更好地掌握后续内容。ROS2(Robot Operating System 2)是一个用于构建机器人应用程序的框架,提供了硬件抽象、设备驱动、库和服务发现等功能[^1]。 对于初次接触ROS2的学习者来说,首先需要完成的是开发环境的搭建工作。这通常涉及到操作系统的选择以及相应版本ROS2的下载和安装过程。官方文档推荐Ubuntu作为首选平台,并提供详细的指南帮助用户顺利完成这一环节。 #### Python 和 C++ 的程序运行时依赖管理 当进入到实际编程阶段后,无论是采用Python还是C++来创建节点,都需要理解这两种语言下如何处理外部依赖项的问题。具体而言,在启动基于这些语言编写的ROS2应用前,系统会自动解析并加载必要的第三方库和支持文件,确保各个组件之间能够正常通信协作。 #### 编写首个ROS2节点实例 为了加深印象,下面给出一段简单的Python代码片段展示怎样快速建立一个最基础的消息发布者节点: ```python import rclpy from rclpy.node import Node def main(): # 初始化rclpy库, 创建上下文环境 rclpy.init() # 实例化Node类对象, 定义节点名称 node = Node('my_first_publisher') # 输出调试信息至控制台 node.get_logger().info('My first publisher has started.') try: # 进入循环等待事件触发 rclpy.spin(node) finally: # 清理资源释放内存空间 rclpy.shutdown() if __name__ == '__main__': main() ``` 这段脚本展示了初始化ROS2客户端库、定义自定义节点名、打印日志消息以及进入监听状态的核心操作流程[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值