鱼C论坛

 找回密码
 立即注册
查看: 2345|回复: 0

[技术交流] 实验11详细解析,高效代码!

[复制链接]
发表于 2012-6-14 13:08:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 hackiy 于 2012-6-14 13:50 编辑
  1. assume cs:codesg

  2. datasg segment
  3.         db "Beginner's All-purpose Symbolic Instruction Code.",0
  4. datasg ends

  5. codesg segment
  6. start:        mov ax,datasg
  7.                 mov ds,ax
  8.                 mov si,0
  9.                 call letterc

  10. over:        mov ax,4c00h
  11.                 int 21h

  12. ;说明:将以0结尾的字符串中的小写字母转变成大写字母
  13. ;参数:ds:si指向字符串的首地址
  14. letterc:;注意,需要转换的是字符串a-z,而不是其他字符
  15.                 push si                        ;子程序入栈
  16.                
  17.         s:        cmp byte ptr [si],0                ;模拟(si)-0
  18.                 je ok                        ;结果等于0则结束
  19.                
  20.                 cmp byte ptr [si],61h        ;小写a的assci码16进制为61h
  21.                 jb no                        ;低于61h则跳到no
  22.                
  23.                 cmp byte ptr [si],7ah        ;小写z的assci码16进制为7ah
  24.                 ja no                        ;高于7ah则跳到no
  25.                
  26.                 and byte ptr [si],0dfh        ;转变为大写(11011111b)
  27.                
  28.         no:         inc si                        ;处理下一个字符
  29.                 jmp short s                ;回到标号s处

  30.          ok:         pop si                        ;子程序出栈
  31.                   ret                        ;子程序返回               
  32. codesg ends
  33. end start
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-6 11:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表