欢迎光临散文网 会员登陆 & 注册

0164-再次显示 hello world

2023-08-14 09:07 作者:jiangbo4444  | 我要投稿

环境

  • Time 2022-11-08

  • WSL-Ubuntu 22.04

  • QEMU 6.2.0

  • NASM 2.15.05

前言

说明

参考:《x86汇编语言:从实模式到保护模式》李忠
参考:https://wiki.osdev.org/Printing_To_Screen

目标

在屏幕上显示 hello world 字符串。

汇编代码

数据区

和之前不同,这次将代码和数据进行了分离,将要显示的字符单独出来,形成了 data 段。

显示逻辑

使用的是 DS:SI 和 ES:DI 两个地址来控制,第一个控制数据,第二个控制显示。 rep 重复指令会检查 cx 是否为 0,不为 0 则继续重复。movsw 是传送字的指令。

标志寄存器

调试时,其中下面就是标志寄存器的内容。cld 控制 DF 方向标志,为 0 表示从小到大。 rep 会检查 ZF 零标志。

总结

使用另一种方式来显示 hello world 字符串。了解 DS,SI,ES,DI 寄存器。 了解了 rep 和 movsw 指令。

附录


0164-再次显示 hello world的评论 (共 条)

分享到微博请遵守国家法律