題目:將datasg中的第一個字串轉化為大寫,第二個字串轉換為小寫。
分析:小寫字母的ASCII碼值比大寫字母的ASCII碼值大20H,也就說把大寫字母加上20h就是小寫字母了,把小寫字母減去20h就是大寫字母。但是問題的關鍵在於我們要先判斷者這個字母是不是大寫或者小寫,確定其大小寫之後,才能做出相應的處理。然而我們目前已經學習到的指令還不能作出這樣的判斷.另一種是除了第5位外,大寫字母和小寫字母的其他各位都一樣。也就是說第五位是區分大小寫關鍵。為0時是大寫字母,為1時是小寫字母。這裡有一點要注意:datasg中定義的'BaSiC'和'iNfOrMaTiOn'是順序存放。
原始碼:
assume cs:codesg,ds:datasg<br />datasg segment<br /> db 'BaSiC'<br /> db 'iNfOrMaTiOn'<br />datasg ends</p><p>codesg segment<br /> start:mov ax,datasg<br /> mov ds,ax<br /> mov bx,0<br /> mov cx,5</p><p> s:mov al,[bx]<br /> and al,11011111B<br /> mov [bx],al<br /> inc bx<br /> loop s </p><p> mov bx,5<br /> mov cx,11 </p><p> s0:mov al,[bx]<br /> or al,00100000B<br /> mov [bx],al<br /> inc bx<br /> loop s0</p><p> mov ax,4c00h<br /> int 21h</p><p>codesg ends<br />end start</p><p>
調試過程:
-r</p><p>AX=0000 BX=0000 CX=0038 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B75 ES=0B75 SS=0B85 CS=0B86 IP=0000 NV UP EI PL NZ NA PO NC<br />0B86:0000 B8850B MOVAX,0B85<br />-u</p><p>0B86:0000 B8850B MOVAX,0B85<br />0B86:0003 8ED8 MOVDS,AX<br />0B86:0005 BB0000 MOVBX,0000<br />0B86:0008 B90500 MOVCX,0005<br />0B86:000B 8A07 MOVAL,[BX]<br />0B86:000D 24DF ANDAL,DF<br />0B86:000F 8807 MOV[BX],AL<br />0B86:0011 43 INCBX<br />0B86:0012 E2F7 LOOP000B<br />0B86:0014 BB0500 MOVBX,0005<br />0B86:0017 B90B00 MOVCX,000B<br />0B86:001A 8A07 MOVAL,[BX]<br />0B86:001C 0C20 ORAL,20<br />0B86:001E 8807 MOV[BX],AL<br />-d ss:0 f</p><p>0B85:0000 42 61 53 69 43 69 4E 66-4F 72 4D 61 54 69 4F 6E BaSiCiNfOrMaTiOn</p><p>-r</p><p>AX=0000 BX=0000 CX=0038 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B75 ES=0B75 SS=0B85 CS=0B86 IP=0000 NV UP EI PL NZ NA PO NC<br />0B86:0000 B8850B MOVAX,0B85<br />-t</p><p>AX=0B85 BX=0000 CX=0038 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B75 ES=0B75 SS=0B85 CS=0B86 IP=0003 NV UP EI PL NZ NA PO NC<br />0B86:0003 8ED8 MOVDS,AX<br />-t</p><p>AX=0B85 BX=0000 CX=0038 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B85 ES=0B75 SS=0B85 CS=0B86 IP=0005 NV UP EI PL NZ NA PO NC<br />0B86:0005 BB0000 MOVBX,0000<br />-p</p><p>AX=0B85 BX=0000 CX=0038 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B85 ES=0B75 SS=0B85 CS=0B86 IP=0008 NV UP EI PL NZ NA PO NC<br />0B86:0008 B90500 MOVCX,0005<br />-p</p><p>AX=0B85 BX=0000 CX=0005 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B85 ES=0B75 SS=0B85 CS=0B86 IP=000B NV UP EI PL NZ NA PO NC<br />0B86:000B 8A07 MOVAL,[BX] DS:0000=42<br />-p</p><p>AX=0B42 BX=0000 CX=0005 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B85 ES=0B75 SS=0B85 CS=0B86 IP=000D NV UP EI PL NZ NA PO NC<br />0B86:000D 24DF ANDAL,DF<br />-p</p><p>AX=0B42 BX=0000 CX=0005 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B85 ES=0B75 SS=0B85 CS=0B86 IP=000F NV UP EI PL NZ NA PE NC<br />0B86:000F 8807 MOV[BX],AL DS:0000=42<br />-p</p><p>AX=0B42 BX=0000 CX=0005 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B85 ES=0B75 SS=0B85 CS=0B86 IP=0011 NV UP EI PL NZ NA PE NC<br />0B86:0011 43 INCBX<br />-p</p><p>AX=0B42 BX=0001 CX=0005 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B85 ES=0B75 SS=0B85 CS=0B86 IP=0012 NV UP EI PL NZ NA PO NC<br />0B86:0012 E2F7 LOOP000B<br />-p</p><p>AX=0B43 BX=0005 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B85 ES=0B75 SS=0B85 CS=0B86 IP=0014 NV UP EI PL NZ NA PE NC<br />0B86:0014 BB0500 MOVBX,0005<br />-p</p><p>AX=0B43 BX=0005 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B85 ES=0B75 SS=0B85 CS=0B86 IP=0017 NV UP EI PL NZ NA PE NC<br />0B86:0017 B90B00 MOVCX,000B<br />-p</p><p>AX=0B43 BX=0005 CX=000B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B85 ES=0B75 SS=0B85 CS=0B86 IP=001A NV UP EI PL NZ NA PE NC<br />0B86:001A 8A07 MOVAL,[BX] DS:0005=69<br />-p</p><p>AX=0B69 BX=0005 CX=000B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B85 ES=0B75 SS=0B85 CS=0B86 IP=001C NV UP EI PL NZ NA PE NC<br />0B86:001C 0C20 ORAL,20<br />-p</p><p>AX=0B69 BX=0005 CX=000B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B85 ES=0B75 SS=0B85 CS=0B86 IP=001E NV UP EI PL NZ NA PE NC<br />0B86:001E 8807 MOV[BX],AL DS:0005=69<br />-p</p><p>AX=0B69 BX=0005 CX=000B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B85 ES=0B75 SS=0B85 CS=0B86 IP=0020 NV UP EI PL NZ NA PE NC<br />0B86:0020 43 INCBX<br />-p</p><p>AX=0B69 BX=0006 CX=000B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B85 ES=0B75 SS=0B85 CS=0B86 IP=0021 NV UP EI PL NZ NA PE NC<br />0B86:0021 E2F7 LOOP001A<br />-p</p><p>AX=0B6E BX=0010 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B85 ES=0B75 SS=0B85 CS=0B86 IP=0023 NV UP EI PL NZ AC PO NC<br />0B86:0023 B8004C MOVAX,4C00<br />-d ds:0 f</p><p>0B85:0000 42 41 53 49 43 69 6E 66-6F 72 6D 61 74 69 6F 6E BASICinformation<br />-p</p><p>AX=4C00 BX=0010 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000<br />DS=0B85 ES=0B75 SS=0B85 CS=0B86 IP=0026 NV UP EI PL NZ AC PO NC<br />0B86:0026 CD21 INT21<br />-p</p><p>Program terminated normally<br />-p<br />