马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 hackiy 于 2012-6-14 13:50 编辑 assume cs:codesg
datasg segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov si,0
call letterc
over: mov ax,4c00h
int 21h
;说明:将以0结尾的字符串中的小写字母转变成大写字母
;参数:ds:si指向字符串的首地址
letterc:;注意,需要转换的是字符串a-z,而不是其他字符
push si ;子程序入栈
s: cmp byte ptr [si],0 ;模拟(si)-0
je ok ;结果等于0则结束
cmp byte ptr [si],61h ;小写a的assci码16进制为61h
jb no ;低于61h则跳到no
cmp byte ptr [si],7ah ;小写z的assci码16进制为7ah
ja no ;高于7ah则跳到no
and byte ptr [si],0dfh ;转变为大写(11011111b)
no: inc si ;处理下一个字符
jmp short s ;回到标号s处
ok: pop si ;子程序出栈
ret ;子程序返回
codesg ends
end start
|