汇编语言如何反向复制字符串(通过loop循环及偏移量) x86
程序员文章站
2022-06-01 22:33:48
...
代码如下
TITLE String
; 第三个汇编程序。
option casemap:none ;大小写敏感
includelib ucrt.lib ;引入静态数据链接库,相当于#include <stdio.h>
includelib legacy_stdio_definitions.lib
INCLUDELIB kernel32.lib ;ExitProcess
.model flat,stdcall ;flat:存储模式(平坦内存模式)
;stdcall:语言类型(从右向左压栈)
printf PROTO C : dword,:vararg ;声明需要使用的函数头,函数不由被调用者清栈,而是由调用者负责清栈
ExitProcess PROTO, ;exit program
dwExitCode:DWORD;return code
.data ;全局静态区
source BYTE "This is the source string", 0
LEN = $ - source ;字符个数
target BYTE SIZEOF source DUP('#')
.code
main PROC
MOV EAX, OFFSET source
MOV ECX, LEN
MOV EBX,0 ;initial
L1: MOV AL, source[ECX-2] #从后获得值
MOV target[EBX], AL ;逐渐加一填入target
INC EBX
LOOP L1
MOV target[LEN-1],0 ;填入结束字符
MOV EDX, OFFSET target
push offset target ;获取msp的偏移值,压栈
call printf ;调用上面声明的printf
push 0h
call ExitProcess
main ENDP
END main
这段代码是老师布置的实验题,代码中有注释,有疑问或者发现问题的请留言
上一篇: oracle 时间戳问题记录
下一篇: MySQL 日志和慢查询