编写一个汇编语言程序,将字符串Hello World中的全部小写字母转换为大写字母,并存放回原地址处。
生活随笔
收集整理的這篇文章主要介紹了
编写一个汇编语言程序,将字符串Hello World中的全部小写字母转换为大写字母,并存放回原地址处。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
編寫一個匯編語言程序,將字符串"Hello World"中的全部小寫字母轉換為大寫字母,并存放回原地址處。
P176
4.10
編程思路:首先DATA段中,定義string存放字符串"Hello World",LEN為字符串string長度;其次,BX獲取string的有效地址,將string存放的字符串賦值給AL,通過AL進行與’a’和’z’這個范圍進行比較,若在該范圍表示為小寫字母,則需要轉換為大寫字母,即AL-20H(小寫字母要比大寫字母所對應的ASCII碼值大20H),所以AL-20H就是小寫字母所對應的大寫字母。
代碼如下:
DATA SEGMENT string DB "Hello World!" ;將需要轉換的字符串存放到string中,定義類型為DB型 LEN EQU $-string ;等值偽指令EQU,將LEN表示string的長度 DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;由于DATA為立即數,不能用賦值給段寄存器DS,需要借助AX通用寄存器MOV DS,AX ;將AX賦值給DSMOV BX,OFFSET string ;BX獲取string的有效地址用于取出string中的字符串MOV CL,LEN ;CL為string字符串的長度 NEXT: MOV AL,[BX] ;此時[BX]為string所存放字符串的內容,賦值給ALCMP AL,'a' ;由于是DB字節類型,只需要將AL的一個字節單元與單個字符'a'進行比較JB LOP ;JB為小于跳轉,即AL存放的字節單元的內容所對應的ASCII碼值小于'a'所對應的ASCII碼值,跳轉到LOP標簽處 否則不跳轉執行下一條指令CMP AL,'z' ;若執行到此條指令,代表AL>='a',接下來需要與'z'進行比較即可JA LOP ;JA為大于跳轉,即AL存放的字節單元的內容所對應的ASCII碼值大于'z'所對應的ASCII碼值,跳轉到LOP標簽處 否則不跳轉執行下一條指令 SUB AL,20H ;執行到此條指令,表示以及確定此時的AL為小寫字母,AL-20H表示將小寫字母轉換為所對應的大寫字母(小寫字母比對應的大寫字母的ASCII碼值大20H)MOV [BX],AL ;將小寫字母轉換為對應的大寫字母結束后,結果AL存放回原來的物理地址[BX]處 LOP: INC BX ;BX+1(因為DB字節類型),表示判斷下一個字節單元存放的字符串DEC CL ;CL-1,表示字符串string所需要判斷字符的長度減一JNZ NEXT ;若CL不為0,即字符串string仍有需要判斷的字符,跳轉到NEXT標簽處MOV AH,4CH ;調用4CH號功能,返回DOS操作系統指令INT 21H ;終止當前程序的運行,并返回DOS系統 CODE ENDSEND START總結
以上是生活随笔為你收集整理的编写一个汇编语言程序,将字符串Hello World中的全部小写字母转换为大写字母,并存放回原地址处。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 摩尔庄园手游餐厅好评度怎么快速提升
- 下一篇: 《秋日示休上人诗》第七句是什么