第七章 问题7.6

    技术2022-05-11  28

    题目:将datasg段中的每个单词的头一个字母改为大写字母。

    分析:这里要知道的两个问题。1:知道如何把字母转换成大写。把其ascii码的第五位设置成0就是大写,设置成1就是小写。2:在datasg段定义的6个单词,每个的存储长度都是10h。然后可以用二维数组的概念来理解。其三:这里可以看出每个单词的首字母都是位于3这个位置(从0数起)。

    源代码:

    assume cs:codesg,ds:datasg datasg segment db '1. file ' db '2. edit ' db '3. screen ' db '4. view ' db '5. options ' db '6. search ' datasg ends codesg segment start: mov ax,datasg mov ds,ax mov bx,0 mov si,3 mov cx,6 s:mov al,[bx][si] and al,11011111B mov [bx][si],al add bx,10h loop s mov ax,4c00h int 21h codesg ends end start

    调试前查看datasg段的数据:

    AX=0710 BX=0000 CX=007E DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0700 ES=0700 SS=0710 CS=0716 IP=0003 NV UP EI PL NZ NA PO NC 0716:0003 8ED8 MOV DS, AX AX=0710 BX=0000 CX=007E DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0710 ES=0700 SS=0710 CS=0716 IP=0005 NV UP EI PL NZ NA PO NC 0716:0005 BB0000 MOV BX, 00000h AX=0710 BX=0000 CX=007E DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0710 ES=0700 SS=0710 CS=0716 IP=0008 NV UP EI PL NZ NA PO NC 0716:0008 BE0300 MOV SI, 00003h -d ds:0 f 0710:000D 20 20 20 32 2E 20 65 64-69 74 20 20 20 20 20 20 2. edit 0710:001D 20 20 20 33 2E 20 73 63-72 65 65 6E 20 20 20 20 3. screen 0710:002D 20 20 20 34 2E 20 76 69-65 77 20 20 20 20 20 20 4. view 0710:003D 20 20 20 35 2E 20 6F 70-74 69 6F 6E 73 20 20 20 5. options 0710:004D 20 20 20 36 2E 20 73 65-61 72 63 68 20 20 20 20 6. search 0710:005D 20 20 20 B8 10 07 8E D8-BB 00 00 BE 03 00 B9 06

    最终的结果:

    -d ds:0 0710:0000 31 2E 20 46 69 6C 65 20-20 20 20 20 20 20 20 20 1. File 0710:0010 32 2E 20 45 64 69 74 20-20 20 20 20 20 20 20 20 2. Edit 0710:0020 33 2E 20 53 63 72 65 65-6E 20 20 20 20 20 20 20 3. Screen 0710:0030 34 2E 20 56 69 65 77 20-20 20 20 20 20 20 20 20 4. View 0710:0040 35 2E 20 4F 70 74 69 6F-6E 73 20 20 20 20 20 20 5. Options 0710:0050 36 2E 20 53 65 61 72 63-68 20 20 20 20 20 20 20 6. Search 0710:0060 B8 10 07 8E D8 BB 00 00-BE 03 00 B9 06 00 8A 00


    最新回复(0)