assume cs:code,ds:data
data segment
db “Beginner’s All-purazpose Symbolic Instruction Code.”,0 注:(多增加了az小写字母)
data ends
code segment
begin:mov ax,data
mov ds,ax
mov si,0
call letterc
mov si,0 注:(这里得内容是自己加显示到屏幕上用得)
mov ah,0
mov di,0
mov bp,bx
mov ax,10
add bx,16
mul bx
mov bx,ax
add bx,4
mov ax,0b800h
mov es,ax
mov di,0
mov ah,0
call show_str 注:(这里得内容是自己加显示到屏幕上用得结束)
mov ax,4c00h
int 21h
letterc:mov ch,0 注:(这里是书中要求得答案,觉得这样写很简单。用得是loop循环)
s:mov cl,ds:[si]
cmp cl,97 注:(97代表是小写字母a,当然也可以写字符串a)
jb so 注:(小于97证明是大写,就不用转换,跳转至光标处)
cmp cl,127 注:(127代表是小写字母z,当然也可以写字符串z)
ja so 注:(大于127证明不是字母类,就不用转换,跳转至光标处,z是字母最后)
and cl,11011111b 注:(走到这步,就说明是小写字母,转换成大写)
mov ds:[si],cl
so:inc si
inc cx
loop s
ret 注:(循环完了,返回。)
show_str:mov cl,ds:[bp+si] 注:(这里是字符串显示到屏幕。看之前发布文章)
inc si
jcxz ok
mov es:[bx+di],cl
mov cl,2
mov es:[bx+di+1],cl
add di,2
jmp short show_str
ok:ret
code ends
end begin