跳至主要內容
汇编语言一发入魂 0x03 - 更多的指令

上一篇文章中我们学习了指令的寻址方式,实际上是借具体的代码总结了一下寻址方式。这篇文章我们将学习更多的指令,通过实际代码的讲解,找到写汇编语言代码的感觉。下面先来讲一下串操作指令。

串操作指令

含义:通过执行一条字符串操作指令,对存储器中某一个连续的内存中存放的一串字或字节均进行同样的操作,称为串操作。字符串操作指令简称为串操作指令。


未央大约 9 分钟汇编语言寻址方式
汇编语言一发入魂 0x02 - 指令的寻址方式

上篇文章中老李给大家教了怎么在屏幕上打印一个字符,还留了个课后作业,打印完整的Hello World。最简单的方法是按照打印H的方式依次打印其它字符就好了。当然,这种重复的工作还是交给计算机去做吧,毕竟我们的时间是很宝贵的。

这篇文章中我们用循环的方式让计算机自己把所有的字符都打印出来。并结合代码给大家讲解一下指令的寻址方式。下面给出代码:

代码

.code16

movw $0x07c0, %ax
movw %ax, %ds

movw $0xb800, %ax
movw %ax, %es

xorw %si, %si
movw message_length, %cx

l1:
  movb message(%si), %bl
  movb %bl, %es:(%si)
  incw %si
  loop l1

jmp .

message:
  .byte 'H', 0xa, 'e', 0xa, 'l', 0xa, 'l', 0xa, 'o', 0xa, ' ', 0xa, 'W', 0xa, 'o', 0xa, 'r', 0xa, 'l', 0xa, 'd', 0xa
message_length:
  .word . - message

.org 510
.word 0xAA55

未央大约 14 分钟汇编语言寻址方式