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