![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编语言
文章平均质量分 54
昏昏的小猪仔
一个热爱生命,热爱生活的编程瓜娃子
展开
-
端口 110
端口的读写CPU可以直接读写3个地方的数据:* CPU内部的寄存器* 内存单元* 端口端口的读写指令只有两条: in和out分别用于从端口读取数据和往端口写入数据。CMOS RAM芯片主要存放时间信息。shl和shr指令CMOS RAM中存储的时间信息...原创 2021-06-06 14:53:46 · 113 阅读 · 0 评论 -
INT指令
调用中断程序int 0成对编程。CPU执行int 7chpushfpush CSpush IP执行iretpop IPpop CSpopfint和iret配合使用, call和ret指令配合使用。有了函数有了过程就有了栈,因为函数有局部变量。BIOS和DOS中断例程的安装过程BIOS:base input output system 基础输入输出系统DOS:读内存 刷新内存 检查内存...原创 2021-06-06 14:29:53 · 204 阅读 · 0 评论 -
内中断10
内中断的产生中断是CPU处理外部突发事件的一个重要技术。它能使CPU在运行过程中对外部事件发出的中断请求及时地进行处理,处理完成后又立即返回断点,继续进行CPU原来的工作。引起中断的原因或者说发出中断请求的来源叫中断源。根据中断源的不同,可以把中断分为硬件中断和软件中断两大类,而硬件中断又可以分为外部中断和内部中断两类。外部中断一般是指由计算机外设发出的中断请求,如:键盘中断、打印机中断、定时器中断等。外部中断是可以屏蔽的中断。也就是说,利用中断控制器可以屏蔽这些外部设备的中断请求。内部中断是指原创 2021-06-05 18:02:03 · 119 阅读 · 0 评论 -
汇编语言 --- 05
bx si di bp 才能用在[] 中括号中。只能以四种组合出现:bx+si bx+di bp+si bp+dibp没有显示的给出段寄存器,则默认的段地址在ss中。绝大部分机器指令都是进行数据处理的指令,处理大致可分为三类:读取、写入、运算。处理的数据在什么位置处理的数据大小如何。在机器指令这一层来讲,并不关心数据的值是多少,而关心指令执行前一刻,它将要处理的数据所在的位置。指令执行前,所要处理的数据可以在三个地方:CPU内部,内存,端口。..原创 2021-06-05 13:03:47 · 52 阅读 · 0 评论 -
04 寄存器 内存访问
内存中字的存储任何两个连续的内存组成一个字单元 字单元= 2b=16bitDS和[address]CPU要读取一个内存单元的时候,必须先给出这个内存单元的地址。DS:数据段寄存器,通常用来存放要访问的数据的段地址。mov指令可以完成的两种传送功能:1.将数据直接送入寄存器2.将一个寄存器中的内容送入另一个寄存器中3.还可以将一个内存单元中的内容送入一个寄存器。[0]代表偏移地址。8086CPU不支持将数据直接送入段寄存器的操作,ds是一个段寄存器。可以直接送入通用寄存器。数据原创 2021-06-05 13:03:16 · 107 阅读 · 0 评论 -
Call和Ret指令汇编指令 08
ret和retfcall和ret指令都是转移指令,它们都修改IP,或同时修改IP和CS。它们经常被共同用来实现自程序的设计ret指令: 用栈中的数据,修改IP的内容,从而实现近转移!CPU执行ret指令时,进行下面两步操作:1. (ip)=(ss)*16+(sp)2. (sp)=(sp)+2call指令依据位移进行转移的call指令转移的目的地址在指令中的call指令转移地址在寄存器中的call指令转移地址在内存中的call指令call和ret的配合使用mul指令模块化程序设计原创 2021-06-05 13:02:53 · 180 阅读 · 0 评论 -
标志寄存器 11
ZF标志8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW)标志寄存器(flag)flag和其他寄存器不一样,其他寄存器是用来存放数据的,都是整个寄存器具有一个含义。flag寄存器是按位起作用的,也就是说它的每一位都有专门的含义,记录特定的信息。CF位是进制位PF是奇偶位ZF是0标志位flag的第6位是ZF,零标志位他记录相关指令执行后* 结果为0,ZF=1* 结果不为0,ZF=0* Zero Flag* ZF的意思是结果是0* 在8086的指原创 2021-06-05 13:02:20 · 440 阅读 · 0 评论 -
汇编语言转移指令--07
操作符offset8086CPU的转移指令分类:1. 无条件转移指令(如:jmp)2. 条件转移指令3. 循环指令(如: loop) 判断CX通用寄存器。4. 过程5. 中断在汇编语言中是由编译器处理的符号,它的功能是取得标号的偏移地址。标号;startjmp指令jmp为无条件转移,可以只修改IP,也可以同时修改CS和IPjmp指令要给出两种信息:1. 转移的目的地址2. 转移的距离(段间转移、段内短转移、段内近转移)jmp short 标号 (转移到标号处执行指令) 机器码包含原创 2021-06-03 13:07:54 · 135 阅读 · 0 评论 -
汇编程序灵活定位内存地址。
SI和DI、BX都是配合DS段地址进行使用。SI:source index 原地址DI:destination index 目标地址BX:一般指向。SI和DI不能拆成两个字节。BX可以。[bx+idata]:[bx+5],[5+bx],5[bx],[bx].5[bx+si]和[bx+di]: 表示内存的偏移地址。mov ax,[bx+si]: 相当于 (ax)= (ds)*16+(bx)+(si)也可以写成 mov ax,[bx] [si] 常用[bx+si+idata] 和 [bx+原创 2021-06-02 17:08:27 · 95 阅读 · 0 评论 -
03 查看CPU和内存,用机器指令和汇编指令编程。
Debug的使用什么是Debug?Debug是DOS,Windows都提供的实模式(8086方式)程序的调试工具。使用它可以查看CPU各种寄存器中的内容/内存的情况和机器码级跟踪程序的运行。常用到的功能:* R命令:查看改变CPU寄存器内容。* D命令: 查看内存中的内容* E命令: 改变内存中的内容* U命令: 将内存中的机器指令翻译成汇编指令。* T命令: 执行一条机器指令* A命令: 以汇编指令的格式在内存中写入一条机器指令。* Debug命令比较多,有20多个,上面6个跟汇编有原创 2021-05-31 14:36:13 · 120 阅读 · 0 评论 -
汇编语言 寄存器 02
通用寄存器CPU概述: 一个典型的CPU由运算器/控制器/寄存器等器件组成,这些器件靠内部总线相连.区别:内部总线实现CPU内部各个器件之间的联系.外部总线实现CPU和主板上其它器件的联系.寄存器概述:8086CPU有14个寄存器,他们的名称为: AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW.以后用到的知识以后再讲.8086CPU所有的寄存器都是16位的,可以存放两个字节.AX,BX,CX,DX通常用来存放一般性数据被称为通用寄存器.数据18在原创 2021-05-31 11:18:12 · 1070 阅读 · 0 评论 -
汇编语言--01
汇编语言基础知识重点放在如何利用硬件系统的编程结构和指令集有效灵活的控制系统进行工作.1.1. 机器语言机器语言是机器指令的集合机器指令展开来讲就是一台机器可以正确执行的指令.早期程序猿们将0/1数字编程的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算.后来逐渐用来继电器,用了电子管,用了晶体管,现在利用石英震动来表示1和0.他们变的只是速度发生了变化.表示的永远还是1和0.所以计算机的底层用的是二进制. 打洞才是程序员的鼻祖.机器码: 10原创 2021-05-29 17:22:59 · 326 阅读 · 0 评论 -
计算机原码 反码 和 补码
一、机器数和真值1. 机器数一个数在计算机中的二进制表示,叫做这个数的机器数。在计算机中最高位为符号位。0代表正数,1代表负数。+1 机器数(8位):0000 0001-1 机器数(8位):1000 0001补充计算机存储最小单位,位(bit)1位=1bit1Byte = 8bit换算公式如下:2. 真值顾名思义就是数据的真正的值。1000 0001 的真值是-10000 0001 的真值是+1一个字节代表的真值范围是 [-128,127] 计算机用码表示,请看下文,知道来原创 2021-05-28 21:21:18 · 1245 阅读 · 0 评论