汇编第七日

端口读写用in(从端口读)和out(往端口写)指令:

in al 60h  从60h号端口读入一个字节

in和out只能使用ax或al存放从端口读入的数据要发送到端口的数据

访问8位端口用al,16位用ax

CMOS RAM 芯片有实时钟(靠电池供电,保证RAM信息不丢失)128个存储单元的RAM

shl实现逻辑左移,最后一位移出时放入CF位,其左移次数跟cl寄存器有关

例如:

mov al, 0101001h

mov cl, 3

shl al, cl

CF位值将变成0

shr指令实现逻辑右移,其余与shl类似

是否响应中断?

根据IF位,IF = 1响应中断,反之

根据可以不响应和一定响应分成可屏蔽中断和不可屏蔽中断

sti 设置IF = 1

cli 设置IF = 0

Done!!!

时间: 2024-10-07 13:58:05

汇编第七日的相关文章

GCC在C语言中内嵌汇编 asm __volatile__ 【转】

转自:http://blog.csdn.net/pbymw8iwm/article/details/8227839 在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作. 1.简单的内嵌汇编 例: __asm__ __volatile__("hlt"); "__asm__"表示后面的

Linux C中内联汇编的语法格式及使用方法(Inline Assembly in Linux C)

在阅读Linux内核源码或对代码做性能优化时,经常会有在C语言中嵌入一段汇编代码的需求,这种嵌入汇编在CS术语上叫做inline assembly.本文的笔记试图说明Inline Assembly的基本语法规则和用法(建议英文阅读能力较强的同学直接阅读本文参考资料中推荐的技术文章 ^_^). 注意:由于gcc采用AT&T风格的汇编语法(与Intel Syntax相对应,二者的区别参见这里),因此,本文涉及到的汇编代码均以AT&T Syntax为准. 1. 基本语法规则 内联汇编(或称嵌入汇

汇编第五日

mov ax, offset 标号:取得标号相对于伪代码后第一条指令地址0的相对偏移量即标号地址 可以发现汇编指令中的idata会直接反映在机器码中 jmp指令可以修改IP或CS和IP的值,具体格式如下: ①jmp short 标号(段内转移) (IP) = (IP)+ 8位位移 8位位移含义是:标号地址减去jmp指令的下一条指令地址即为相对位移地址(可正可负,但是范围必须在8位数据能表示之内)并不是直接目的地址 8位位移范围为-128 - 127 例如: JMP 0008即跳到0BBD:000

在vs 2015环境下,c语言和汇编混编操作简析(更新中......)

在VS 2015环境下如何混编. 在新建工程里也会发现了很多问题, 应用程序类型分为:windows应用程序,控制台应用程序,DLL,静态库 静态库: 静态库是指在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为"库"文件:在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中的这种库. 程序编译一般需经预处理.编译.汇编和链接几个步骤.静态库特点是可执行文件中包含了库代码的一份完整拷贝:缺点就是被多次使用就会有多份冗余拷贝. 静态库和动态库是两种共享程序

用汇编来解释“计算机是怎么工作的”

本文章为<Linux内核分析>实验报告 梁永锐 原创作品转载请注明出处 http://www.cnblogs.com/liangyongrui/p/6392035.html <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 " ----- 以下为要分析的c代码 int g(int x) { return x + 36; } int f(int x) { return g(x) * 4; }

Java千百问_02基本使用(015)_java如何通过汇编方式运行

点击进入_更多_Java千百问-基本使用 1.java如何通过汇编方式运行 java本身不能通过汇编方式运行.但是,我们可以通过某些插件,在运行中将java代码解释为汇编指令,让我们能够通过分析执行的汇编指令来查找一些问题,也可以帮助我们分析和理解JVM是如何解释和编译的(当然java本身的编译和运行和汇编无关). PrintAssembly是JVM的一个运行参数,它允许我们获取在控制台打印java代码翻译成的汇编指令.使用PrintAssembly需要一些插件的支持,这些并不是JVM直接提供的

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 选择调用的进程为 24 i386 getuid sys_getuid1647 i386 getgid sys_getgid16 使用库函数API方式 使用C代码中嵌入汇编代码方式

汇编速查表

指令 功能 AAA 调整加 AAD 调整除 AAM 调整乘 AAS 调整减 ADC 进位加 ADD 加 AND 与 ARPL 调整优先级 BOUND 检查数组 BSF 位右扫描 BSR 位左扫描 BSWAP 交换字节 BT 位测试 BTC 位测试求反 BTR 位测试清零 BTS 位测试置一 CALL 过程调用 CBW 转换字节 CDQ 转换双字 CLC 进位清零 CLD 方向清零 CLI 中断清零 CLTS 任务清除 CMC 进位求反 CMOVA 高于传送 CMOVB 低于传送 CMOVE 相等

RT-11SJ 环境下运行pdp11汇编MACRO-11

一.在simh下运行RT-11SJ 1:安装simh:win下直接安装,linux下make后在BIN目录找到pdp11并cp到搜索路径目录下 2:到http://simh.trailing-edge.com/software.html 下载RT-11 V4 for the PDP-11 的镜像磁盘文件rt11swre.tar.Z并解压,在Disks目录下可得到镜像文件rtv4_rk.dsk 3:建立运行目录rt11swre,把rtv4_rk.dsk移到该目录 4:建立simh启动文件boot.