;C程序转汇编(或运算链接)
DATAS SEGMENT
a Dw
b dw
cc dw
d dw
m dw
n dw
string db dup(?)
DATAS ends
CODES SEGMENT
ASSUME CS:CODES, DS:DATAS
START:
mov AX,DATAS
mov DS,AX ;把需要比较的两个数字放入两个寄存器中 mov ax,a
mov bx,b
cmp ax,bx
jb Rm ;当a<B时跳转到rm
mov m, ;当a>b时为假所以m赋值为0
;上述内容给等价于m=a<>>b
mov ax,cc
mov bx,d
cmp ax,cc
ja Rn
mov n,
;上述内容给等价于n=c>d
jmp exit Rm:
mov m,
jmp exit
Rn:
mov n,
jmp exit
exit:
mov si,offset string
mov AX,m
and AL,0FH
add al,30H
mov [si],al
;把m转化为ASCII码并存入string中
xor cx,cx
mov cl,
;上述两句设置循环次数
lp:
inc si
mov byte ptr [si],20H ;20H代表空格
loop lp
;利用循环添加3个空格 代替\t
inc si
mov AX,n
and AL,0FH
add al,30H
mov [si],al
;把n转化为ASCII码并存入string中
mov byte ptr [si+],'$'
;为字符串string加上结束符
lea dx,string
mov ah,09h
int 21H
mov ah,4ch
int 21H
CODES ends
end START

<hr>

 ;C程序转汇编(与运算链接)
DATAS SEGMENT
a Dw
b dw
cc dw
d dw
m dw
n dw
string db dup(?)
DATAS ends
CODES SEGMENT
ASSUME CS:CODES, DS:DATAS
START:
mov AX,DATAS
mov DS,AX ;把需要比较的两个数字放入两个寄存器中 mov ax,a
mov bx,b
cmp ax,bx
jbe Rm ;当a<=B时跳转到rm
mov m, ;当a>b时为真所以m赋值为1
;上述内容给等价于m=a>b
mov ax,cc
mov bx,d
cmp ax,cc
jbe Rn
mov n,
;上述内容给等价于n=c>d
jmp exit Rm:
mov m,
jmp exit
Rn:
mov n,
jmp exit
exit:
mov si,offset string
mov AX,m
and AL,0FH
add al,30H
mov [si],al
;把m转化为ASCII码并存入string中
xor cx,cx
mov cl,
;上述两句设置循环次数
lp:
inc si
mov byte ptr [si],20H ;20H代表空格
loop lp
;利用循环添加3个空格 代替\t
inc si
mov AX,n
and AL,0FH
add al,30H
mov [si],al
;把n转化为ASCII码并存入string中
mov byte ptr [si+],'$'
;为字符串string加上结束符
lea dx,string
mov ah,09h
int 21H
mov ah,4ch
int 21H
CODES ends
end START

汇编:实现C语言的 ||与&&运算的更多相关文章

  1. C语言中递归什么时候能够省略return引发的思考:通过内联汇编解读C语言函数return的本质

    事情的经过是这种,博主在用C写一个简单的业务时使用递归,因为粗心而忘了写return.结果发现返回的结果依旧是正确的.经过半小时的反汇编调试.证明了我的猜想,如今在博客里分享.也是对C语言编译原理的一 ...

  2. 从linux0.11中起动部分代码看汇编调用c语言函数

    上一篇分析了c语言的函数调用栈情况,知道了c语言的函数调用机制后,我们来看一下,linux0.11中起动部分的代码是如何从汇编跳入c语言函数的.在LINUX 0.11中的head.s文件中会看到如下一 ...

  3. [汇编与C语言关系]2. main函数与启动例程

    为什么汇编程序的入口是_start,而C程序的入口是main函数呢?以下就来解释这个问题 在<x86汇编程序基础(AT&T语法)>一文中我们汇编和链接的步骤是: $ as hell ...

  4. R语言的日期运算

    写hive SQL查询, 需要从导入的参数, 自动累加日期. 从而实现一个自动的,多个日期的统计过程 R语言的日期运算超级简单. > test<-Sys.Date() > test ...

  5. keil or c51 汇编调用c语言函数 容易忽视的问题

    最近,在用keil 写一个小程序时,想实践一下从汇编调用 C语言函数,我们都知道C语言调用汇编函数讨论得较多,但反过来,从汇编中调用C语言的函数未见深入分析:在开始的时候,还是忽视了一个问题,就是对现 ...

  6. C语言 三目运算

    C语言 三目运算 功能:为真后可根据条件选择成立两个不同的表达式 如果表达式1值为真选择表达式2 如果表达式1值为假选择表达式3 案例 #define _CRT_SECURE_NO_WARNINGS ...

  7. 从汇编来看c语言之指针

    一.基础研究 将下面的程序编译连接,用debug加载: 首先执行第一条语句: 发现p=(unsigned char *)0x1000;在这里是把1000赋给一个偏移地址为01af.大小为两字节的内存空 ...

  8. 从汇编来看c语言之变量

    1.基础研究 对如图程序进行编译连接,再用debug加载. 我们在偏移地址1fa处查看main函数的内容: 执行到1fd处,发现n的偏移地址为01a6,段地址存储在ds寄存器里,为07c4. 再查看函 ...

  9. C语言的本质(32)——C语言与汇编之C语言内联汇编

    用C写程序比直接用汇编写程序更简洁,可读性更好,但效率可能不如汇编程序,因为C程序毕竟要经由编译器生成汇编代码,尽管现代编译器的优化已经做得很好了,但还是不如手写的汇编代码.另外,有些平台相关的指令必 ...

随机推荐

  1. php 设置虚拟目录

    php 设置虚拟目录两个步骤,很简单. 第一,打开安装apache目录下的conf下面的httpd.conf文件.   找到IfModule 标记, 再它下面添加红色方框中的内容.注意不能少东西.   ...

  2. grep和管道

    1.管道命令: 可以连接多个Linux命令 命令1 | 命令2 | 命令3 2.grep  正则表达式  从文件或者字符串中搜索字符串 格式:grep  ‘’  file 返回符合规则的行 需求:查询 ...

  3. Sublime Text Emmet插件 : 生成html,css 快捷键

    (输入下面简写,按Tab键可触发效果,或者 ctrl + e) html缩写 输入 !后 按下 ctrl + e : 结果 <!DOCTYPE html><html lang=&qu ...

  4. 浅谈 ECMAScript 和 JavaScript

    ES5与ES3基本保持兼容,较大的语法修正和新功能加入,将由JavaScript.next完成. 什么是ECMAScript?http://baike.baidu.com/link?url=G1T8n ...

  5. Andoid Intent学习之在各个活动之间传递数据

    Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件.通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意 ...

  6. 【工作中学习1】两个设计模式:Singleton(单例)和 Adapter(适配器)

    好久没有写自己的学习小博客,罪过罪过..最近本菜鸟在项目中接触到经常用到的设计模式,首先是Singleton(单例),这个相信大家都会用到很多,所以自己用代码实现一下,有助于自己学习理解,如有不对,请 ...

  7. SQL中的聚合函数

    聚合函数是对一组值执行计算并返回单一的值的函数,它经常与SELECT语句的GROUP BY子句一同使用,SQL SERVER 中具体的聚合函数如下:1. AVG 返回指定组中的平均值,空值被忽略. 例 ...

  8. 关于 no device found for connection ‘ System eth0′问题

    在Vmware上面安装CentOS,开机后,使用:service network restart时,会提示一下错误: Shutting down loopback interface:         ...

  9. httpclient 中post请求重定向

    背景:使用httpclient 的post请求进行登录,需要重定向登录,请求重定向后的地址 在httpclient中post请求不像get请求自己可以重定向,实现方式是 判断post请求返回码是否是3 ...

  10. 【CCPC-Wannafly Winter Camp Day4 (Div1) G】置置置换(动态规划)

    点此看题面 大致题意: 求出有多少个长度为\(n\)的排列满足对于奇数位\(a_{i-1}<a_i\),对于偶数位\(a_{i-1}>a_i\). 考虑打表? 考虑每次只有一个数\(n\) ...