用程序段实现,将BUF缓冲区中的100个字节数据依向反次序传送到存储区STRBUF中

小题目,对于初学来讲,学到的东西还不少。。。 

题目:

用程序段实现,将 BUF 缓冲区中的 1 00 个字节数据依向反次序传送到存储区 STRBUF 中。

 

.386
.model flat, stdcall
option casemap: none

include windows.inc
include user32.inc
include kernel32.inc
includelib kernel32.lib
includelib user32.lib

.data
BUF db '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890helloworld',0  ;缓冲区的100个字节数据
STRBUF db 100 dup(0)


.code


start:
      mov eax , OFFSET BUF ;eax中存放 源BUF 的偏移地址 , 这里一直是BUF首地址的偏移地址
      mov ecx , 100    ;ecx寄存器中存放变化量 相当于for语句中的i ,这里给i赋初始值100
loops:
      mov bl , [eax+ecx-1]
      mov edx , OFFSET STRBUF ;edx中存放 目的STRBUF 的偏移地址 , 开始时是首地址的偏移地址
      add edx , 100
      sub edx , ecx
      mov [edx] , bl
      dec ecx       ;;;;;;;;
      cmp ecx , 0          ;这三条指令的综合功能是:判断ecx寄存器中的值减减(如C语言中 i--)是否为0,不为0则跳回到标号loop处,继续执行“for语句”
      jne loops      ;;;;;;;;

invoke MessageBox , NULL, offset BUF, offset STRBUF, MB_OK
invoke ExitProcess, 0
end start

你可能感兴趣的:(我学我体会)