简单汇编语言实例

简单汇编语言实例,第1张

(1)判断双字的高位字是不是1,如果不是,直接返回

(2)清除进位标志

(3)将低字求反,然后 +1

(4)将进位保存起来

(5)将高位字求反,加上刚才的进位

--------------

XXXX:

MOV AX, X + 1 取 X 的高位字

CMP AX, 32768

JB X_EXIT 是正数就跳转

MOV AX, X 取 X 的低位字

XOR AX, 0FFFFH 取反

ADD AX, 1

PUSHF

MOV X, AX

MOV AX, X + 1 取X 的高位字

XOR AX, 0FFFFH 取反

POPF

ADC AX, 0

MOV X + 1, AX

X_EXIT:

RET

你是指内联汇编吧?比如下面这个例子:

#include <stdio.h>

int func(int a, int b)

{

 return a - b

}

int main()

{

 //计算 12-5

 int a = 12, b = 5  //给定两个数

 int res    //用来记录结果

 __asm{     //内联汇编

  push b    //b压栈

  push a    //a压栈,注意C中函数接受参数的时候入栈是反着的

  call func   //调用函数func, 返回值保存在eax里

  mov res, eax  //将eax里的值赋给res

 }

 printf("%d\n", res) //输出结果,得到7

 return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11210516.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存