鱼C论坛

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

[技术交流] 刚学会用栈做参数写了两个功能子程序

[复制链接]
发表于 2016-12-30 16:46:04 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 泡泡吧 于 2016-12-30 16:49 编辑

第一个向屏幕显示文本
第二个转换大小写字母
  1. ;功能名: show
  2. ;说明: 向屏幕显示文本,以0结尾文本
  3. ;参数: push ax 文本,以零结尾
  4. ;参数: push ax 文本颜色,
  5. ;参数: push ax 行,从零开始
  6. ;结果: 向指定行显示指定文本
  7. ;源码始:
  8. show:   mov bp,sp         
  9.         mov ds,[bp+6]  ;文本
  10.         mov ax,0b800h  ;屏幕显示地址
  11.         mov es,ax
  12.         mov ax,[bp+2] ;行
  13.         add ax,4
  14.         mov bx,160   ;第一行4*160
  15.         mul bx
  16.         mov bx,ax
  17.         mov si,0
  18.         mov di,0
  19. show_s1:mov cl,ds:[di]     ;ds:[di]指向文本byte单元                 
  20.         mov ch,0  
  21.         jcxz s0            ;如果=0直接返回
  22.         mov al,cl
  23.         mov ah,[bp+4]      ;颜色
  24.         mov es:[bx][si],ax ;显示
  25.         add si,2
  26.         inc di     
  27.         loop show_si
  28. show_s0:ret
  29. ;源码终

  30. ;功能名: capital
  31. ;说明: 将字母转换大小写.以0结尾字母
  32. ;参数: push ax 字母
  33. ;参数: push 0and1  ;0表示大写,1表示小写
  34. ;结果: 字母的首地址保存在ax中
  35. ;源码始
  36. capital:mov bp,sp
  37.         mov ds,[bp+4];把字母放入ds中
  38.         mov cx,[bp+2];
  39.         mov si,0

  40.         jcxz caps0 ;如果=0 转为大写 跳转到caps

  41. caps1:  mov cl,ds:[si]        ;指向第一个字符
  42.         mov ch,0
  43.         jcxz caps2            ;如果=0跳出循环
  44.         or byte ptr[si],00100000b
  45.         inc si                ;ds:[si]下一个
  46.         loop caps1
  47.         jmp short caps2

  48. caps0:  mov cl,ds:[si]        ;指向第一个字符
  49.         mov ch,0
  50.         jcxz caps2            ;如果=0跳出循环
  51.         and byte ptr [si],11011111b
  52.         inc si                ;ds:[si]下一个
  53.         loop caps0
  54.         jmp short  caps2

  55. caps2:  mov ax,ds             ;(ax)=(ds)
  56.         ret
  57. ;源码终
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-4 09:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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