文档章节

初学 Delphi 嵌入汇编[17] - 逻辑运算

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 425
阅读 11
收藏 0
AND: 逻辑与指令 OR : 逻辑或指令 XOR: 逻辑异或指令 NOT: 逻辑非指令 这和 Delphi 的逻辑命令完全一致.
//逻辑非 Not: 
{
  not 1 = 0; 
  not 0 = 1;
}
var
  ByteNum: Byte;
begin
  //赋值 11111111B (255) 取反:
  asm
    mov al, 11111111B {eax 包含 ax; ax 包含 al; al 是 eax 的低八位}
    not al            {给 11111111 取反会得到 00000000}
    mov ByteNum, al   {把寄存器 al 中的值给变量 ByteNum}
  end;
  ShowMessage(IntToStr(ByteNum)); {0}


  //赋值 00000001B (1) 取反:
  asm
    mov al, 00000001B
    not al            {给 00000001 取反会得到 11111110}
    mov ByteNum, al
  end;
  ShowMessage(IntToStr(ByteNum)); {254}


  //赋值 10000000B (128) 取反:
  asm
    mov al, 00000001B
    not al            {给 10000000 取反会得到 01111111}
    mov ByteNum, al
  end;
  ShowMessage(IntToStr(ByteNum)); {127}
end;

 
 
 
 
 

 

 

  
//逻辑或 Or: { 1 or 0 = 1; 0 or 1 = 1; 1 or 1 = 1; 0 or 0 = 0; } var ByteNum: Byte; begin asm mov al, 10101010B {170} mov cl, 01010101B {85} or al, cl mov ByteNum, al end; ShowMessage(IntToStr(ByteNum)); {255} end;
//逻辑与 And: { 1 and 1 = 1; 1 and 0 = 0; 0 and 1 = 0; 0 and 0 = 0; } var ByteNum: Byte; begin //例1 asm mov al, 11111111B {255} mov cl, 11111111B {255} and al, cl mov ByteNum, al end; ShowMessage(IntToStr(ByteNum)); {255} //例2 asm mov al, 00000000B {0} mov cl, 00000000B {0} and al, cl mov ByteNum, al end; ShowMessage(IntToStr(ByteNum)); {0} //例3 asm mov al, 11111111B {255} mov cl, 00000000B {0} and al, cl mov ByteNum, al end; ShowMessage(IntToStr(ByteNum)); {0} //例4 asm mov al, 10101010B {170} mov cl, 01010101B {85} and al, cl mov ByteNum, al end; ShowMessage(IntToStr(ByteNum)); {0} end;
//逻辑异或 Xor: { 1 Xor 0 = 1; 0 Xor 1 = 1; 1 Xor 1 = 0; 0 Xor 0 = 0; } var ByteNum: Byte; begin //例1 asm mov al, 11111111B {255} mov cl, 11111111B {255} xor al, cl mov ByteNum, al end; ShowMessage(IntToStr(ByteNum)); {0} //例2 asm mov al, 11111111B {255} mov cl, 00000000B {0} xor al, cl mov ByteNum, al end; ShowMessage(IntToStr(ByteNum)); {255} //例3 asm mov al, 10101010B {170} mov cl, 01010101B {85} xor al, cl mov ByteNum, al end; ShowMessage(IntToStr(ByteNum)); {255} end;

本文转载自:http://www.cnblogs.com/del/archive/2008/01/28/1055648.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
编写高效简洁的C语言代码,是许多软件工程师追求的目标。各位有什么高招呢?请不吝赐教。。。

以下是我个人的一些体会和经验,不对的地方请各位指教。同时希望各位拿出自己的干货分享一下经验 第1招:以空间换时间   计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发...

刘学炜
2012/04/17
726
4
C语言嵌入式系统编程修炼之性能优化

这是我13年前创作和发表在互联网上的文章,这么多年过去了,这篇文章仍然在到处传播。现在贴回Linuxer公众号。 全文目录: C语言嵌入式系统编程修炼之道——背景篇 C语言嵌入式系统编程修炼之...

jus3ve
2017/12/31
0
0
开源的系统级编程利器:D语言

在Digital Mars公司的D语言首 页上,放置着这样一段话“计算机编程语言门类众多,其来源大致可分为两种途径。一类新语言来自于极具创新精神的学术界;而一类则源于关注研发结合和互联网 的新...

小卒过河
2011/10/11
4.7K
21
SHA512编程实现与优化之一:maj函数

SHA512算法中的maj函数可以C函数简单方便地实现: 从字面上看,逻辑乘"&"有3次,异或"^"有2次,事实真的如此吗? 将此函数编译成汇编语言得到如下结果:(注释是我后加上的) 阅读汇编代码可知...

safedead
2016/05/20
49
0
ARM嵌入式开发中的GCC内联汇编简介

ARM嵌入式开发中的GCC内联汇编简介 嵌入式开发交流群280352802,欢迎加入! 在针对ARM体系结构的编程中,一般很难直接使用C语言产生操作协处理器的相关代码,因此使用汇编语言来实现就成为了...

长平狐
2013/06/03
70
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
今天
1
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
0
0
spring EL 和资源调用

资源调用 import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.springframework.core.io.Resource;......

Canaan_
今天
1
0
memcached命令行、memcached数据导出和导入

一、memcached命令行 yum装telnet yum install telent 进入memcached telnet 127.0.0.1 11211 命令最后的2表示,两位字节,30表示过期时间(秒) 查看key1 get key1 删除:ctrl+删除键 二、m...

Zhouliang6
今天
1
0
Linux定时备份MySQL数据库

做项目有时候要备份数据库,手动备份太麻烦,所以找了一下定时备份数据库的方法 Linux里有一个 crontab 命令被用来提交和管理用户的需要周期性执行的任务,就像Windows里的定时任务一样,用这...

月夜中徘徊
今天
1
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部