汇编语言 STOS 指令

STOS 指令将数据项从 AL(用于字节-STOSB)、AX(用于字-STOSW)或 EAX(用于双字-STOSD)复制到内存中 ES:DI 指向的目标字符串。

以下实例演示如何使用 LODSSTOS 指令将大写字符串转换为小写值:

  1. section .text
  2. global _start ;must be declared for using gcc
  3. _start: ;tell linker entry point
  4. mov ecx, len
  5. mov esi, s1
  6. mov edi, s2
  7. loop_here:
  8. lodsb
  9. or al, 20h
  10. stosb
  11. loop loop_here
  12. cld
  13. rep movsb
  14. mov edx,20 ;message length
  15. mov ecx,s2 ;message to write
  16. mov ebx,1 ;file descriptor (stdout)
  17. mov eax,4 ;system call number (sys_write)
  18. int 0x80 ;call kernel
  19. mov eax,1 ;system call number (sys_exit)
  20. int 0x80 ;call kernel
  21. section .data
  22. s1 db 'HELLO, WORLD', 0 ;source
  23. len equ $-s1
  24. section .bss
  25. s2 resb 20 ;destination

结果如下:

  1. hello, world

分类导航