汇编语言字符串大小写翻转转换

这是在上Intel汇编程序设计的时候写的一个课堂练习,对于初学者,很想输出结果,但是有不知道怎么做,可以仿造下面的模板去输出结果.


;>>>>>>>>>>>>>>>>>
;本程序完成了将 Hello,My Asm 字符串翻转, 转化为大写,小写的操作
;通过MASM等编译器编译连接就可生成.exe文件

;>>>>>>>>>>>>>>>>>
.386
.model flat,stdcall
option casemap:none
.data
HelloInit BYTE "原始字符串, Hello,My Asm, 看我开始变化",0
HelloString BYTE "HelloMyAsm",0
HelloStringSize = ($ - HelloString) - 1
HelloTempString BYTE 20 dup(0)
szCaption db 'Test MessageBox',0
szMax db '大写',0
szMin db '小写',0
szFan db '翻转',0
szEnd db '好了,我变完了...',0


include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
.code
;将HelloString反转显示
RollOverString PROC
pushad
mov ecx, HelloStringSize
mov esi, 0

L1: movzx eax, HelloString[esi]
push eax
inc  esi
loop L1

mov ecx, HelloStringSize
mov esi, 0
L2:pop eax
mov HelloTempString[esi],al
inc esi
loop L2

;显示翻转的字符串
;invoke MessageBox,NULL,offset HelloTempString, offset szCaption,MB_OK

;拆解invoke指令显示
push MB_OK
push offset szFan
push offset HelloTempString
push NULL
call MessageBox

popad

ret
RollOverString ENDP


;将字符串全部大写
MaxWriteString PROC
pushad
mov ecx, HelloStringSize
mov esi, 0

L1:movzx eax, HelloString[esi]
and  al, 11011111b  ;变化为大写
mov  HelloTempString[esi], al
inc  esi
loop L1

;显示翻转的字符串
invoke MessageBox,NULL,offset HelloTempString, offset szMax,MB_OK

popad

ret
MaxWriteString ENDP


;将字符串全部大写
MinWriteString PROC
pushad
mov ecx, HelloStringSize
mov esi, 0

L1:movzx eax, HelloString[esi]
or al, 00100000b  ;变化为小写 
mov  HelloTempString[esi], al
inc  esi
loop L1

;显示翻转的字符串
invoke MessageBox,NULL,offset HelloTempString, offset szMin,MB_OK

popad

ret
MinWriteString ENDP


start:
;显示原始字符串
invoke MessageBox,NULL,offset HelloInit, offset szCaption,MB_OK
;调用将字符串全部大写函数
invoke MaxWriteString
;调用将字符串全部转化为小写函数
invoke MinWriteString
;调用翻转字符串函数
invoke RollOverString


invoke MessageBox,NULL,offset szEnd, offset szCaption,MB_OK

;结束程序
invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值