1 ;小寫字母的ASCII碼比大寫字母的ASCII碼的值大20H。 2 ;比如大寫字母A的ASCII值為01000001 小寫字母a的ASCII碼為:01100001 3 ;公式為 a(01100001) - 20H(100000) = A(01000001) 4 ;A(01000001) + 20H(100000) = a(01100001) 5 assume cs:codesg,ds:datasg 6 7 datasg segment 8 9 db 'Basic' ;定義字符 10 db 'iNfOrMaTiOn' 11 12 datasg ends 13 14 codesg segment 15 16 start: mov ax,datasg ;將定義的字符以16進制方式傳入AX通用寄存器 17 mov ds,ax ;然后指向數據段地址 18 19 mov bx,0 ;將偏移地址設置為0,這樣就獲取到了ds:[0] = 'B' 20 21 mov cx,5 ;CX設置為5次,循環得到Basic字符 22 s: mov al,[bx] ;將DS:[bx]內存數據送到AL低八位寄存器中 23 and al,11011111B ;將AL中的數據進行按位與運算,變為大寫字母 24 mov [bx],al ;將轉換后的ASCII返回到原單元 25 inc bx ;bx加1,加5次,依次指向BASIC內存地址 26 loop s ;繼續循環 27 28 mov bx,5 ;將BX偏移地址設置為5,指向BASIC后 29 mov cx,11 ;循環11次 30 31 s0: mov al,[bx] ;,獲取iNfOrMaTiOn 32 or al,00100000B ;將ASCII碼的第五位設置為1,變成小寫 33 mov [bx],al ;將轉換后的ASCII碼寫回原單元 34 inc bx ;依次加1 35 loop s0 ;繼續循環 36 mov ax,4c00h 37 int 21H 38 codesg ends 39 end start
?