1 TITLE MASM Template (main.asm)
 2
 3 ; Description:
 4 ;
 5 ; Revision date:
 6
 7 .686P        ; Pentium Pro or later
 8 .MODEL flat, stdcall
 9 .STACK 4096
10 option casemap:none;  大小不敏感
11
12
13 printf          PROTO C :dword,:vararg
14 scanf           PROTO C :dword,:vararg
15 gets        PROTO C :dword
16 getchar        PROTO C
17 ExitProcess    PROTO,dwExitCode:DWORD          ; exit program
18 exit        EQU <INVOKE ExitProcess,0>
19
20 INCLUDELIB C:\asm\USER32.LIB
21 INCLUDELIB C:\asm\KERNEL32.LIB
22 INCLUDELIB C:\asm\MSVCRT.LIB
23
24 chr$ MACRO any_text:VARARG                            ;老师的神码
25         LOCAL txtname
26         .data
27           txtname db any_text,0
28           align 4
29         .code
30           EXITM <OFFSET txtname>
31 ENDM
32
33 .data
34  buf    byte    256 dup(0)
35 .code
36 main    PROC
37     invoke    printf,chr$("Please input the string: ")
38     invoke    scanf, chr$("%s"),offset buf
39     invoke    getchar            ;把scanf的回车换行清掉
40
41     lea    EBX,buf                                                    ;lea 将buf 的 地址给ebx    同时 用 mov EBX, offset buf 可替换该句
42 BEGIN:    CMP    byte ptr [EBX],0
43     JZ    XCHGL
44     CMP    byte ptr [EBX],'a'
45     JB    NEXT
46     CMP    byte ptr [EBX],'z'
47     JA    NEXT
48     SUB    byte ptr [EBX],20H
49 NEXT:   INC    EBX
50     JMP    BEGIN
51
52 XCHGL:    LEA    ESI,buf
53     MOV    EDI,EBX
54     DEC    EDI
55 EXCHANGE:CMP    ESI,EDI
56     JAE    OVER
57     MOV    AL,[ESI]
58     XCHG    AL,[EDI]
59     MOV    [ESI],AL
60     INC    ESI
61     DEC    EDI
62         JMP    EXCHANGE
63
64 OVER:    invoke    printf,chr$("The result is: %s",0dh,0ah),offset buf        ; 关于buf前面的offset问题,我觉得应该是因为字符串在存储
65                                                                               ;还是以数组的形式存的,所以前面要加上offset取数组的首地                                                                                                                ;址,当buf不是字符串,而是整型数时,就不用offset了
66     invoke  getchar
67     exit
68 main    ENDP
69
70     END main

转载于:https://www.cnblogs.com/windynight/archive/2012/04/18/2455832.html

汇编学习心得(二)关于字符的处理相关推荐

  1. STM32学习心得二十一:实时时钟RTC和备份寄存器BKP特征、原理及相关实验代码解读

    记录一下,方便以后翻阅~ 主要内容 1) RTC特征与原理: 2) BKP备份寄存器特征与原理: 3) RTC常用寄存器+库函数介绍: 4) 相关实验代码解读. 实验内容: 因为没有买LCD屏,所以计 ...

  2. BT源代码学习心得(二):程序运行参数的获取 -- 转贴自 wolfenstein (NeverSayNever)

    BT源代码学习心得(二):程序运行参数的获取 发信人: wolfenstein (NeverSayNever), 个人文集 标  题: BT源代码学习心得(二):程序运行参数的获取 发信站: 水木社区 ...

  3. STM32学习心得二十六:DAC数模转换实验

    记录一下,方便以后翻阅~ 主要内容: 1) DAC数模转换原理: 2) 寄存器和库函数介绍: 3) 相关实验代码解读. 实验功能:系统启动后,按WK_UP键,输出电压加200点,对应电压值200*3. ...

  4. STM32学习心得二十四:内部温度传感器原理及实验

    记录一下,方便以后翻阅~ 主要内容: 1) STM32内部温度传感器概述: 2) 相关实验代码解读. 实验功能:系统启动后,实时将内部温度传感器的值传至串口助手上. 官方资料:<STM32中文参 ...

  5. Internet路由结构学习心得二:通告汇聚和具体路由影响AS入流量

    如图所示.你是R1.R2.R3所在的AS 123的网管,R3所在的子公司需要大量对AS 5中的R5所在ISP进行访问,因此在它们之间连接了一条网段为36.0.0.0/24的网段.要求:除了R3与R5之 ...

  6. linux设备驱动学习(二)——字符设备编写及测试

    一.字符设备体结构介绍 1.字符设备作为linux内核三大驱动设备之一,主要完成字节的读写操作,常见的应用有鼠标.键盘等,结构体形式如下所示: struct cdev{ struct kobject ...

  7. 《深入理解计算机系统》学习心得二:关于show-bytes的 学习

    此段代码,使用强制类型转换来访问和打印不同程序对象的字节表示.show-bytes打印出每个以十六进制表示的字节. /* show-bytes - prints byte representation ...

  8. 2020春季学期哈工大软件构造学习心得二

    前言 上一章主要讲了软件构造的结果形态以及如何是一个"好"的软件 这一章主要学习软件开发遵循着一个什么样的过程 - 软件生命周期与配置管理 From 0 to 1,from 1 t ...

  9. 汇编学习笔记(二):转移指令

    章节目录 转移指令原理 jmp 指令 jcxz 指令 loop 指令 ret 和 retf 指令 call 指令 call+ret 作者能力有限, 如果您在阅读过程中发现任何错误, 还请您务必联系本人 ...

最新文章

  1. Ubuntu 16.04下部署Graylog日志服务器
  2. AWS — AWS Direct Connect
  3. 科学计算库Numpy——随机模块
  4. 1.7-06编程基础之字符串 字符翻转
  5. Memcached简介
  6. 食品安全--牛奶和蛋白质浅谈
  7. PS图像菜单下计算命令
  8. [LeetCode] Minimum Depth of Binary Tree
  9. python基础:字典的使用
  10. Linux 小知识翻译 - 「/proc 文件夹」
  11. 谭浩强C语言第四版第九章课后习题7--9题(建立,输出,删除,插入链表处理)...
  12. Linq 学习笔记(一)
  13. Linux 串口编程学习记录(termios.h)
  14. 第52届世界标准日,细数我国密码标准化工作成果
  15. PC客户端中的网页----问题集合(未完待续)
  16. 炸薯片和AI生产新闻一样样的!拢共分六步
  17. 命令行下转换amr为mp3
  18. FBX SDK动画开发
  19. 【vue教程】来自JSpang 技术胖的视频
  20. 第三方接口转换工具类

热门文章

  1. 邓俊辉数据结构学习-3-栈
  2. 熟悉常用的HBase操作
  3. 【BZOJ 3729】3729: Gty的游戏 (Splay维护dfs序+博弈)
  4. 页面上一些小icon的制作方法及技术选择
  5. RobotFrameWork接口报文测试-----(一)简单demo的实现
  6. docker: 解决centos7下cgroup.procs: no such device的错误
  7. 【Eclipse 插件】JD-Eclipse
  8. 五大存储模型关系模型、键值存储、文档存储、列式存储、图形数据
  9. 港中大教授研发DeepID人脸识别技术 准确率超99%
  10. 8.3. 测试 opensips