汇编(子程序的参数传递 例)

用寄存器传递参数

从键盘输入一个十进制数(小于65536的正数),显示出该数的16进制形式
算法分析:两步实现,1.把十进制转化为二进制,2.把二进制转化为十六进制,两步可分别用子程序实现,dtoh子程序把十进制变成二进制,btoh子程序把二进制用十六进制显示,bx寄存器用于在子程序间传递参数,为避免显示重叠,用crlf子程序实现输出回车换行

dtohex segment
assume cs:dtohex
main proc far //调用与dos系统不在一个段地址的主程序,与main endp对应
push ds  //程序加载后ds存放程序所在内存的段地址,该内存的前256字节存放程序段前缀psp(dos执行程序时建立的信息块)
xor ax,ax
push ax  //这三条语句为ret做准备,ret即执行pop ip, pop cs,执行完ip的值为0,cs的值为ds。程序转移到程序PSP的起始地址,起始地址的前两个字节放的是int 20指令,用于返回DOS
call dtob //十进制数键盘输入并整合为二进制
call crlf  //输出回车并换行
call btoh  //二进制转为十六进制显示
ret  //返回dos
main endp  //主程序结束
dtob proc near  //十进制转二进制子程序
mov bx,0  
input:mov ah,1  //键盘输入,字符输入到al
int 21h
sub al,30h  //把输入的ascii码转为数值,30h即为48
jl exit  //和0比较,小于0跳转
cmp al,9  //和9比较,大于9跳转
jg exit  //不是数则退出
cbw  //字节型扩展为字型,8位扩展为16位,将AL的最高有效位D7扩展至AH&#
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值