汇编学习心得(二)关于字符的处理
生活随笔
收集整理的這篇文章主要介紹了
汇编学习心得(二)关于字符的处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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
總結
以上是生活随笔為你收集整理的汇编学习心得(二)关于字符的处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#入门篇5-5:流程控制语句 dowh
- 下一篇: QT发布中遇到的问题 - wufan的专