016.字符串逆序程序

;字符串翻转		(RevStr.asm)
.386

.model flat,stdcall

.stack 4096

ExitProcess PROTO,dwExitCode:DWORD

.data
	aName BYTE "Abraham Lincoln",0
	nameSize=($-aName)-1

.code
	main PROC
		;将名字压入栈
		mov ecx,nameSize		;在这里值得注意的是,这里借助eax的原因,因为aName[esi]是八位变址操作数,但是
		mov esi,0				;32bit汇编语言里面栈的大小是32bit的,也就是说一个栈空间可以存储320,1二进制

	L1:
		movzx eax,aName[esi]	;获取字符 32bit零扩展传送 对齐内存
		push eax				;压入堆栈  压入堆栈制后只需要在取出的时候仅仅取到最低的八位就可以得到字符串每一位的
		inc esi					;ASCII码值,这里实际上是借助了大内存存储小内容得理念,其目的是便于操作对齐内存
		loop L1

		;将每一个栈中的32bit逆序弹出堆栈,并存入aName数组
		mov ecx,nameSize
		mov esi,0
	L2:
		pop eax					;获取字符
		mov aName[esi],al		;存入字符串
		inc esi

		loop L2

	invoke exitprocess,0
main endp
end main
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值