x86汇编学习 ----- 四
;将data段中的每个单词的第一个字母改成大写
;2011-9-27 YoungWei
assume cs:code,ds:data
data segment
db '1. file '
db '2. edit '
db '3. search '
db '4. view '
db '5. options '
db '6. help '
data ends
code segment
start: mov ax,data
mov ds,ax ;将data段与数据段相关联
mov cx,6 ;由于改6个单词,故设置循环次数6
mov bx,4 ;每个需要修改的字母位于每个数据块的第4个位置
S0: mov al,[bx]
and al,11011111B
mov [bx],al
add bx,16
loop S0
mov ax,4c00h
int 21h
code ends
end start
首先debug改程序
E:\SourceCode\Assemble\Masm615>debug code75.exe
-r
AX=0000 BX=0000 CX=007B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=141F ES=141F SS=142F CS=1435 IP=0000 NV UP EI PL NZ NA PO NC
1435:0000 B82F14 MOV AX,142F
-d 142f:0
142F:0000 31 2E 20 20 66 69 6C 65-20 20 20 20 20 20 20 20 1. file
142F:0010 32 2E 20 20 65 64 69 74-20 20 20 20 20 20 20 20 2. edit
142F:0020 33 2E 20 20 73 65 61 72-63 68 20 20 20 20 20 20 3. search
142F:0030 34 2E 20 20 76 69 65 77-20 20 20 20 20 20 20 20 4. view
142F:0040 35 2E 20 20 6F 70 74 69-6F 6E 73 20 20 20 20 20 5. options
142F:0050 36 2E 20 20 68 65 6C 70-20 20 20 20 20 20 20 20 6. help
142F:0060 B8 2F 14 8E D8 B9 06 00-BB 04 00 8A 07 24 DF 88 ./...........$..
142F:0070 07 83 C3 10 E2 F5 B8 00-4C CD 21 00 00 00 00 00 ........L.!.....
查看数据,其中数据全部写入,并且每个单词以及其编号和所带空格占了16个字节
所以每次bx要增加16(10H)。
debug运行程序最终结果
-d 142f:0
142F:0000 31 2E 20 20 46 69 6C 65-20 20 20 20 20 20 20 20 1. File
142F:0010 32 2E 20 20 45 64 69 74-20 20 20 20 20 20 20 20 2. Edit
142F:0020 33 2E 20 20 53 65 61 72-63 68 20 20 20 20 20 20 3. Search
142F:0030 34 2E 20 20 56 69 65 77-20 20 20 20 20 20 20 20 4. View
142F:0040 35 2E 20 20 4F 70 74 69-6F 6E 73 20 20 20 20 20 5. Options
142F:0050 36 2E 20 20 48 65 6C 70-20 20 20 20 20 20 20 20 6. Help
142F:0060 B8 2F 14 8E D8 B9 06 00-BB 04 00 8A 07 24 DF 88 ./...........$..
142F:0070 07 83 C3 10 E2 F5 B8 00-4C CD 21 00 00 00 00 00 ........L.!.....
符合程序要求。
作者:VI_Young
补充:软件开发 , 其他 ,