存储单元传递参数

文章作者 100test 发表时间 2008:01:11 12:23:37
来源 100Test.Com百考试题网


在调用子程序时,当需要向子程序传递大量数据时,因受到寄存器容量的限制,就不能采用寄存器传递参数的方式,而要改用约定存储单元的传送方式。这种参数传递方式有点象情报人员和联络人员之间的传递信息方式,一个向指定地点放情报,另一个从指定地点取情报。

  例7.2是采用约定存储单元传递参数的例子,所处理的数据不是直接传给子程序,而是把存储它们的地址告诉子程序。

  例7.4:编写一个子程序分类统计出一个字符串中数字字符、字母和其它字符的个数。该字符串的首地址用DS:DX来指定(以0为字符串结束),各类字符个数分别存放BX、CX和DI中。

  解:
  .子程序功能:分类统计出字符串中数字字符、字母和其它字符的个数

  .入口参数:DS:DX指向被统计的字符串

  .出口参数:BX、CX和DI分别保存数字字符、字母和其它字符的个数

  .算法描述:1、当字符在’0’~’9’范围时,数字字符个数BX加1;

  2、为了判断简单,先把字字母变成大写字母;

  3、当字符在’A’~’Z’范围时,字母个数CX加1;

  4、否则,其它字符个数DI加1。

  COUNTPROC
  PUSHAX
  PUSHSI
  XORBX, BX
  XORCX, CX
  XORDI, DI.上三条指令使各类字符计数清零
  MOVSI, DX
  again:MOVAL, [SI]
  INCSI
  CMPAL, 0
  JEover
  CMPAL, ’0’
  JLother
  CMPAL, ’9’
  JGnext
  INCBX.数字字符个数加1
  JMPagain
  next:CALLUPPER.调用子程序把AL中的字母变成大写字母
  CMPAL, ’A’
  JLother
  CMPAL, ’Z’
  JGother
  INCCX.字母个数加1
  JMPagain
  other:INCDI.其它字符个数加1
  JMPagain
  over:POPSI
  POPAX
  RET
  COUNTENDP

  例7.5 显示出任意字符串中数字字符、字母和其它字符的个数。
  解:
  .MODELSMALL
  .DATA
  MSGDB ’KSDJ L0984/[]3oiu OIU OIU (*&.(5341’, 0
  .CODE
  .STARTUP
  LEADX, MSG.DS:DX指向待统计的字符串
  CALLCOUNT.调用子程序统计出各类字符的个数
  CALLDISPBX.调用子程序显示数字字符的个数
  MOVBX, CX
  CALLDISPBX .调用子程序显示字母的个数
  MOVBX, DI
  CALLDISPBX.调用子程序显示其它字符的个数
  .EXIT 0
  END

相关文章


如何有条件的分步删除数据表中的记录
统计不固定栏目的工资年报的存储过程
操作数的寻址方式之立即寻址方式
传送—填充指令(Move-and-FillI truction)
存储单元传递参数
汇编语言标识符和表达式
怎样生成最小的DirectFB
读取软盘逻辑扇区的汇编实现代码
MS-SQL中约束与DML语句的运行顺序
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛