子程序的调用和返回指令子程序举例
来源:优易学  2011-11-4 14:40:23   【优易学:中国教育考试门户网】   资料下载   IT书店
 编写一个子程序UPPER,实现把寄存器AL中存放的字符变大写。解: 

  ;子程序功能:把AL中存放的字符变大写 

  ;入口参数:AL 

  ;出口参数:AL 

  ;算法描述:判断AL中字符必须在’a’~’z’之间才能把该字符变为大写 

  UPPERPROC 

  CMPAL, ’a’;书写’a’的ASCII码61H也可以 

  JBover 

  CMPAL, ’z’ 

  JA over 

  SUBAL, 20H;书写指令AND AL, 0DFH也可以
 
  over:RET 

  UPPERENDP 

  例7.2 编写一个求字符串长度的子程序StrLen,该字符串以0为结束标志,其首地址存放在DS:DX,其长度保存在CX中返回。 
解: 

  ;子程序功能:求字符串的长度 

  ;入口参数:DS:DX存放字符串的首地址,该字符串以0为结束标志 

  ;出口参数:CX存放该字符串的长度 

  ;算法描述:用BX来指针来扫描字符串中的字符,如果遇到其结束标志,则停止扫描字符串操作 

  StrLenPROC 

  PUSHAX 

  PUSHBX;用堆栈来保存子程序所用到的寄存器内容
 
  XORCX, CX 

  XORAL, AL 

  MOVBX, DX 

  again:CMP[BX], AL 

  JZover 

  INCCX;增加字符串的长度 

  INCBX;访问字符串的指针向后移 

  JMPagain
 
  over:POPBX;恢复在子程序开始时所保存的寄存器内容 

  POPAX 

  RET 

  StrLenENDP

责任编辑:虫虫

文章搜索:
 相关文章
热点资讯
热门课程培训