c语言与汇编的混合编程代码

#include <stdio.h>
#define count 16   /*显示二进制的位数*/
extern dip(int,int);
extern check(int);
extern wait(void);
int main()
 {
 int num;
 char ch;
 printf("input a num>>");
 scanf("%d",&num);
 printf("result:check(%d)=%d/n",num,check(num));
 printf("the bin code is:");
 disp(num,count);
 printf("/nPress any key to coutine.../n");
 wait();
 }

 

//汇编源代码

 .model small
 .stack
 .data
 .code
 dispchar macro mes
 push ax
 push dx
 mov ah,2h
 mov dl,mes
 int 21h
 pop dx
 pop ax
 endm  ;宏定义,显示一字符
  public _check
 _check proc
 push bp
 mov bp,sp
 mov ax,[bp+4]
 test al,0ffh
 jp retl
  mov cl,1
 nextc: test ah,0ffh
 jp reth
 mov ch,1
 jmp stop
 retl: mov cl,0
 jmp nextc
 reth: mov ch,0
 stop: xor ch,cl
 mov ah,0 ;ax中存返回值
 mov al,ch
 pop bp
 ret
 _check endp
public _disp
_disp proc near
 push bp
 mov bp,sp
 mov ax,[bp+4]
 mov cx,[bp+6]
 add cx,0 ;避免cx为零
 jz done
lop: mov bl,0
 shl ax,1
 adc bl,'0'
 dispchar bl
 loop lop
done: 
 dispchar 0ah
 dispchar 0dh
 pop bp
 ret
_disp endp

;等待键盘输入函数
public _wait
 _wait proc
 mov ah,1h
 int 21h
 ret
 _wait endp
 end

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值