使用汇编实现字符串的大小写转换

使用汇编编程,可以直接访问内存中的数据,对数据进行相关操作,现在需要通过汇编指令and,or对字符串数据进行大小写转换。如下例,将BaSiC转换成大写,将iNforMaTiOn转换成小写。

例子:

assume cs:codesg,ds:datasg

datasg segment
 db 'BaSiC'
 db 'iNforMaTiOn'
datasg ends

codesg segment
 start: mov ax,datasg
  mov ds,ax

  mov cx,5
  mov bx,0

 s1: mov al,ds:[bx]
  and al,11011111b
  mov ds:[bx],al
  inc bx
  loop s1

  mov cx,11
  mov bx,5

 s2: mov al,ds:[bx]
  or al,00100000b
  mov ds:[bx],al
  inc bx
  loop s2

  mov ax,4c00h
  int 21h

codesg ends

end start

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C# 通过 inline-asm 解决嵌入x86汇编

    "嵌入"是指什么?资源?注入进程?如果是嵌入资源,那跟嵌入任何其他内容是一样的,vs中只要拖拽就能完成嵌入资源.如果是注入进程,则必须得先将汇编码转为机器码.虽然托管的C#也是能办到,但这似乎是所有人都不推荐的方式. C#可不可以嵌入汇编 可以 在我眼中C#作为一个介于中上层语言是不可能不可以置入汇编代码的 为什么会被我认为中上层语言呢 从C#保留指针就可以看出 我知道有很多人一定不会相信C#可以使用汇编代码 不过C#会比较麻烦C#不可以直接内联汇编(inline-asm)准确的说C#

  • 汇编语言无效指令错误概述

    问题:cmpxchg8b 指令比较一个8字节值edx和EAX带有8字节值内存( 目的地操作数). 只有有效目标操作数用于此指令是内存 操作数. 如果目标操作数是一个寄存器处理器应产生一个 无效OpCode例外,执行的指令cmpxchg8b应当停止和 处理器应该执行无效OpCode异常处理程序. 此错误发生是 锁定前缀为使用cmpxchg8b指令与一个(无效)寄存器目的地 操作数. 在这种情况下,处理器可能无法启动执行无效OpCode 异常处理程序,因为总线已锁定. 这将导致系统挂起. 提示:如果

  • 如何在TC2.0中调用汇编程序

    TC是美国BORLAND 公司在IBM PC机上开发的一个高效.优化的C编译程序,它自带高效的全屏幕编辑程序,在集成开发环境下可支持编辑.编译.连接调试和运行等过程连续完成. TC提供了与汇编语言的接口和在C程序中直接插入汇编指令代码的功能,支持以"远调用"和"近调用"方式来调用使用汇编语言编写的函数. TC调用汇编语言函数时,对汇编语言的编写要求十分严格,并且对大小写字母也有严格的区分.如果在编写供TC调用的汇编函数时不按照规定好了的格式书写,调用是不会成功的.

  • 汇编语言常见错误信息中文注解

    本文的目标是收集大部分汇编中常见错误信息及对其的中文注解,方便大家在写汇编程序时能够快速地定位错误并解决问题. ml.exe错误信息: 复制代码 代码如下: FATAL   严重错误 cannot open file不能打开文件 I/O error closing fileI/O错误 正在关闭文件 I/O error writing fileI/O错误 正在写文件 I/O error reading file            I/O错误 正在读取文件 out of memory      

  • 汇编优化提示

    你需记住的最重要的事情就是代码花费的时间!不同的方法可以加速你的代码或者不能,所以你要多多尝试.因而计算代码花费的时间来看看你尝试的每个方法是否可以提速是件很重要的事情. :=========================初级========================= <1>释放所有8-CPU寄存器,以使它们用于你自己的代码中 复制代码 代码如下: push ebx push esi push edi push ebp :必须在改变ESP之前完成 :装载ESI.EDI和其他传递栈中值

  • 汇编语言超浓缩教程

    所以我个人看法学汇编,不一定要写程序,写程序确实不是汇编的强项,大家不妨玩玩DEBUG,有时CRACK出一个小软件比完成一个程序更有成就感(就像学电脑先玩游戏一样).某些高深的指令事实上只对有经验的汇编程序员有用,对我们而言,太过高深了.为了使学习汇编语言有个好的开始,你必须要先排除那些华丽复杂的命令,将注意力集中在最重要的几个指令上(CMP LOOP MOV JNZ--).但是想在啰里吧嗦的教科书中完成上述目标,谈何容易,所以本人整理了这篇超浓缩(用WINZIP.WINRAR-依次压迫,嘿嘿!

  • 汇编语言rep movsd 的使用详解

    mov esi,offset @s1mov edi,offset @s2 mov ecx,10cld rep movsd 1.rep movsd 每次ecx!=0便执行movsd ,然后ecx=ecx-1 movsd移动ds:[si] 到es:[di],在32位汇编下可以用esi代替si,edi代替di 2.同时由于在一般exe中ds = es 程序起始位置所以另esi = offset @s1就可以找到变量s1 ,edi= offset @s2就可以找到变量s2 3.movsd此类指令有个性质

  • C语言内嵌汇编API内存搜索引擎实例

    本文实例讲述了C语言内嵌汇编API内存搜索引擎的方法,分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: // apisearchEngine.cpp : Defines the entry point for the console application.  //    #include "stdafx.h"  #include <Windows.h>     DWORD __stdcall GetStrLengthA(char* szName)  {   

  • 使用汇编实现字符串的大小写转换

    使用汇编编程,可以直接访问内存中的数据,对数据进行相关操作,现在需要通过汇编指令and,or对字符串数据进行大小写转换.如下例,将BaSiC转换成大写,将iNforMaTiOn转换成小写. 例子: assume cs:codesg,ds:datasg datasg segment db 'BaSiC' db 'iNforMaTiOn' datasg ends codesg segment start: mov ax,datasg mov ds,ax mov cx,5 mov bx,0 s1: m

  • ARM汇编解决阶乘及大小写转换的问题

    环境以及硬件 一.硬件仿真基于 SAMSUNG's S3C44B0X 16/32-bit RISC microprocessor 芯片,仿真器为 J-LINK 二.编写指令软件为 Integrated Development Environment ,软件仿真为 ARMulate.dll 三.需要基于ARM7硬件平台的C语言启动代码,用于分配中断向量表,初始化ISR地址,初始化堆栈空间,初始化应用程序执行环境,配置存储器系统,设定时钟周期,呼叫主应用程序. 四.这里仅有关键算法代码 ARM汇编求

  • C#使用ToUpper()与ToLower()方法将字符串进行大小写转换的方法

    本文实例讲述了C#使用ToUpper()与ToLower()方法将字符串进行大小写转换的方法.分享给大家供大家参考.具体分析如下: C#通过ToUpper()方法将字符串转换成大写,代码如下: string sentence= "this is in upper case."; Console.WriteLine(sentence.ToUpper()); C#通过ToLower()方法将字符串转换成小写,代码如下: string sentence= "this is in L

  • Python字符串字母大小写转换的各种情况详析

    目录 1.lower() 2.upper() 3.capitalize() 4.title() 5.swapcase() 6.casefold() 总结 1.lower() 将字符串中的大写字母转换成小写字母 语法:str.lower() #举例: str1 = "LiBai is a boy" str2 = "WWW.jrcg.com" print(strl) print("转换后:",str1.lower()) print(str2) pri

  • Python判断字符串与大小写转换

    判断字符串 s.isalnum() #所有字符都是数字或者字母 s.isalpha() #所有字符都是字母 s.isdigit() #所有字符都是数字 s.islower() #所有字符都是小写 s.isupper() #所有字符都是大写 s.istitle() #所有单词都是首字母大写,像标题 s.isspace() #所有字符都是空白字符.\t.\n 大小写转换 s.upper() #把所有字符中的小写字母转换成大写字母 s.lower() #把所有字符中的大写字母转换成小写字母 s.cap

  • php大小写转换函数(strtolower、strtoupper)用法介绍

    1,将字符串转换成小写 strtolower函数: 该函数将传入的字符串参数所有的字符都转换成小写,并以小定形式放回这个字符串. 例子: <?php $str = "I want To FLY"; $str = strtolower($str); echo $str; //by www.jb51.net ?> 输出: i want to fly 2,将字符转成大写 strtoupper函数:该函数的作用同strtolower函数相反,是将传入的字符参数的字符全部转换成大写,

  • 汇编语言功能字符串大小写转换实现实例详解

    目录 问题1:将data段中的第一个字符串转换成大写,第二个字符串转换成小写 问题2:将data段中每个单词的头一个字母改成大写字母 问题3:将data段中每个单词改为大写字母 问题4:将data段中每个单词的前4个字母改为大写字母 问题5:设计一个子程序,将一个全是字母的字符串转化成大写 问题6:设计一个子程序,将一个全是字母,以0结尾的字符串,转化成大写 复杂一点的对结构化数据的版本 问题1:将data段中的第一个字符串转换成大写,第二个字符串转换成小写 分析: 如何转换成大小写 如果利用A

  • PHP将字符串首字母大小写转换的实例

    每个单词的首字母转换为大写:ucwords() <?php $foo = 'hello world!'; $foo = ucwords($foo); // Hello World! $bar = 'HELLO WORLD!'; $bar = ucwords($bar); // HELLO WORLD! $bar = ucwords(strtolower($bar)); // Hello World! ?> 第一个单词首字母变大写:ucfirst() <?php $foo = 'hello

  • Python 字符串大小写转换的简单实例

    ①所有字母都转换为大写 # -*- coding:utf-8 -*- if __name__ == "__main__":     a = 'hello, world!'     print(a.upper())输出: HELLO, WORLD! ②所有字母都转换为小写 # -*- coding:utf-8 -*- if __name__ == "__main__":     a = 'HELLO, WORLD!'     print(a.lower())输出: h

  • Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    去空格及特殊符号 s.strip().lstrip().rstrip(',') Python strip() 方法用于移除字符串头尾指定的字符(默认为空格). 复制字符串 #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sStr2 = sStr1 sStr1 = 'strcpy2' print sStr2 连接字符串 #strcat(sStr1,sStr2) sStr1 = 'strcat' sStr2 = 'append' sStr1 += sStr2 print

随机推荐