汇编语言 循环嵌套 将datasg段中每个单词改为大写字母 改进版
生活随笔
收集整理的這篇文章主要介紹了
汇编语言 循环嵌套 将datasg段中每个单词改为大写字母 改进版
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目要求
將datasg段中每個單詞改為大寫字母
思路
注意用al存放ascii即可
大寫對應的ascii第五位是0,除了第五位以外不變 and al,11011111b
注意循環嵌套的時候 只有一個cx不夠用怎么辦 可以放在dx中臨時存儲 等內循環執行完畢后 再從dx中將cx取出 即可正常嵌套循環
改進:將cx放棧中 這樣使用push pop指令更方便 并且解決寄存器數量有限的問題
運行過程
執行前:所有行都是小寫
執行完一遍外循環:第一行變成大寫
執行完所有外循環:所有行都變成大寫
程序結束
代碼(原始)
;將datasg段中每個單詞改為大寫字母 ;注意用al存放ascii即可 ;;大寫對應的ascii第五位是0,除了第五位以外不變 and al,11011111b assume cs:code,ds:datasgdatasg segmentdb 'ibm 'db 'dec 'db 'dos 'db 'vax ' datasg endscode segment start:;把datasg地址放到ds中mov ax,datasgmov ds,axmov si,0mov cx,6 ;6行 循環6次 s1: ;外循環6mov dx,cx ;用dx暫存cxmov bx,0 ;從第0個字母開始mov cx,3 ;改變3個字母 3次循環 s2: ;內循環mov al,ds:[si+bx] ;取出and al,11011111b ;改成大寫mov ds:[si+bx],al ;放回inc bxloop s2 ;內循環底部mov cx,dx ;把外循環的cx還給它mov ax,si ;借助axadd ax,10h ;借助ax指向下一行mov si,ax ;ds指向下一行loop s1 ;外循環底部mov ax,4c00hint 21h code ends end start改進后
題目有一點點小的變化:
題目要求
編程,將datasg段中每個單詞的前4個字母改為大寫字母
*本次改進,增加了對棧的使用
運行過程
執行一次外循環后,第一行單詞前三個字母被改為大寫
執行所有外循環后,所有單詞前三個字母被改為大寫,成功~
代碼
還是圖片版代碼看著舒服 有高亮
總結
以上是生活随笔為你收集整理的汇编语言 循环嵌套 将datasg段中每个单词改为大写字母 改进版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编语言 利用ASCII以及AND OR
- 下一篇: vb Select Case的使用 字