标签:
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
标签:
原文地址:http://www.cnblogs.com/killbit/p/4809119.html