欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

汇编语言如何反向复制字符串(通过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  

这段代码是老师布置的实验题,代码中有注释,有疑问或者发现问题的请留言

相关标签: 学习 大学课程