assume cs:code
data segment
db "Beginner's ALL-purpose Symbolic Instruction Code.",0
data ends
code segment
begin:
mov ax,data
mov ds,ax
mov si,0
call letterc
mov ax,4c00h
int 21h
letterc:
push cx
push si
pushf
mov cx,0
s: mov cl,byte ptr [si]
jcxz ok ;到了0就结束
cmp cx,97
jb next ;不是小写字母,继续下一个
cmp cx,122 ;不是小写字母,继续下一个
ja next
and cl,11011111b
mov byte ptr [si],cl ;将转好的结果写回内存
next: ;第一次运行就忘了写回指令了
inc si
jmp short s
ok: popf
pop si
pop cx
ret
code ends
end begin
145B:0000 42 45 47 49 4E 4E 45 52-27 53 20 41 4C 4C 2D 50 BEGINNER'S ALL-P
145B:0010 55 52 50 4F 53 45 20 53-59 4D 42 4F 4C 49 43 20 URPOSE SYMBOLIC
145B:0020 49 4E 53 54 52 55 43 54-49 4F 4E 20 43 4F 44 45 INSTRUCTION CODE
145B:0030 2E 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
145B:0040 B8 5B 14 8E D8 BE 00 00-E8 05 00 B8 00 4C CD 21 .[...........L.!
145B:0050 51 56 9C B9 00 00 8A 0C-E3 12 83 F9 61 72 0A 83 QV..........ar..
145B:0060 F9 7A 77 05 80 E1 DF 88-0C 46 EB EA 9D 5E 59 C3 .zw......F...^Y.
145B:0070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ |