|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
复制代码 |
|