![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编语言
Tristan
这个作者很懒,什么都没留下…
展开
-
一步步学汇编(二)栈
<br />今天还是些基础的东西,继续熟悉和玩debug<br /> <br />mov指令可完成的传送:<br />(1)将数据直接送入寄存器;<br />(2)将一个寄存器中的内容送入另一个寄存器<br />(3)将内存单元中的内容送入寄存器([{0}] {0}所表示的数字为偏移地址<br />,而段地址由段地址寄存器ds中的内容决定)<br />8086不支持直接将数据送入段寄存器,所以,必须先将地址值送入通用寄存器,<br />再由通用寄存器存入段寄存器<br />发觉debug 中用-a写代码,原创 2011-03-28 20:01:00 · 759 阅读 · 0 评论 -
一步步学汇编(九)call & ret
<br />一步步学汇编(九) call & ret<br />call和ret指令都是转移指令,都修改IP,或同时修改CS和IP。经常被用来<br />实现子程序的设计。<br />ret指令用栈中的数据,修改IP的内容,实现近转移<br />retf指令用栈中的数据,修改CS和IP的内容,实现远转移<br />CPU执行ret指令时的操作:<br />(1)(IP)=((SS)*16+(SP))<br />(2)(SP)=(SP)+2<br />CPU执行retf指令是的操作:<br />(1)(IP)原创 2011-04-07 20:13:00 · 477 阅读 · 0 评论 -
一步步学汇编(十)标志寄存器
<br />一步步学汇编(十)标志寄存器<br />标志寄存器的作用:<br />(1) 用来存储相关指令的某些执行结果<br />(2) 用来为CPU执行相关指令提供行为依据<br />(3) 用来控制CPU的相关工作方式<br />flag的1,3,5,12,13,14,15位在8086CPU中是不起作用的<br />ZF,第6位,记录相关指令执行结果,为0则ZF=1,否则,ZF=0<br />PF,第2位,奇偶标志位,记录指令执行结果所有二进制位中1的个数是否为<br />偶数,是偶数,则PF=1,为原创 2011-04-08 15:10:00 · 491 阅读 · 0 评论 -
一步步学汇编(八)转移指令
<br />可以修改IP,或同时修改CS和IP的指令统称转移指令<br />offset:由编译器处理的符号,功能是取得标号的偏移地址<br />jmp为无条件转移指令,可以只修改IP,也可以同时修改CS和IP<br />jmp指令要给出两种信息:<br />(1)转移的目的地址<br />(2)转移的距离(段间转移。段内短转移,段内近转移)<br />jmp short 标号:表示段内短转移<br />CPU执行指令的过程:<br />(1)从CS:IP指向的内存单元中读取指令,读取的指令放入指令缓冲区<原创 2011-04-06 14:33:00 · 577 阅读 · 0 评论 -
一步步学汇编(七) 数据&总结
<br />在8086CPU中,只有4个寄存器(bx,si,di,bp)可以在“[...]”中来进行<br />内存单元的寻址<br />在[...]中,上述4个寄存器可以单个出现,或只能以四种组合出现:<br />bx+(si或di);bp+(si或di)<br />bx默认的段地址在ds中,bp默认的段地址在ss中<br />在没有寄存器名存在的情况下,用操作符X ptr 指明内存单元的长度,X在<br />汇编语言中可以为word或byte<br />push指令只进行字操作<br />div 除法指原创 2011-04-05 12:29:00 · 333 阅读 · 0 评论 -
一步步学汇编(六)内存寻址方式
<br />昨天逛西湖去了,没好好学习~~不过锻炼了身体~加油~三水<br /> <br />and指令:逻辑与指令,将操作对象的相应位设为0<br />or指令:逻辑或指令,将操作对象的相应位设为1<br />只要编码和解码采用同样的规则,我们就可以将人能理解的信息<br />存入计算机,再从计算机中取出<br />小写字母的ASCII码值比大写字母的大20H<br />重要:大写字母二进制数的5号位为0,而小写字母的5号位为1,可用逻辑<br />与或实现大小写之间的转换<br />[bx+idata]原创 2011-04-02 17:08:00 · 438 阅读 · 0 评论 -
一步步学汇编(六)内存寻址方式
<br />昨天逛西湖去了,没好好学习~~不过锻炼了身体~加油~三水<br /> <br />and指令:逻辑与指令,将操作对象的相应位设为0<br />or指令:逻辑或指令,将操作对象的相应位设为1<br />只要编码和解码采用同样的规则,我们就可以将人能理解的信息<br />存入计算机,再从计算机中取出<br />小写字母的ASCII码值比大写字母的大20H<br />重要:大写字母二进制数的5号位为0,而小写字母的5号位为1,可用逻辑<br />与或实现大小写之间的转换<br />[bx+idata]原创 2011-04-02 17:07:00 · 642 阅读 · 0 评论 -
一步步学汇编(五)利用多个段编写程序
<br /> <br />今天心情不错,经过昨天的混乱,今天感觉有一丝丝的顿悟了。还是按部就班<br />吧~~接着学汇编<br />dw: define word 定义字型数据,所占内存空间为16个字节<br />end伪指令的作用:通知编译器程序结束,并可通知编译器程序的入口在哪<br />例如:end start 表示程序的入口在start:所指向的地方<br />可执行文件由描述信息和程序组成,程序来自于源程序中的汇编指令和定<br />义的数据;描述信息则主要是编译、连接程序对源程序中相关伪指令处原创 2011-03-31 16:26:00 · 1085 阅读 · 0 评论 -
一步步学汇编(三)开始编写程序
<br />伪指令:没有对应的机器指令,最终不被CPU所执行,由编译器执行的指令。<br />汇编指令:有对应的机器指令,由CPU执行的指令,是对机器语言的抽象<br />segment... ends:伪指令,前者表明一个段的开始,后者表明一个段的结束<br />end:表示汇编程序的结束,注意与ends的区别<br />assume:将段寄存器与某个程序中的段相关联<br />程序的执行过程:如果一个程序P2在可执行文件中,则必须有一个正在运行的程序P1,<br />将P2从可执行文件中加载如内存,将C原创 2011-03-29 15:12:00 · 551 阅读 · 0 评论 -
一步步学汇编(四)[bx]和loop
<br />虽然今天很不爽,也有种自己心智要突破的感觉,但是每天要做的是还是<br />要做的,学汇编吧~<br />要完整地描述一个内存单元,需要两种信息:(1)内存单元地址<br />(2)内存单元的长度(类型)<br />对于寄存器接收内存的数据的类型会自动判断:<br />(al)、(bl)、(cl)等得到的为字节型<br />(ds)、(ax)、(bx)等得到的为字型<br />inc bx 的意思为bx中的内容加1<br />loop指令执行时要进行的两步操作:<br />(1)(cx) = (原创 2011-03-30 23:58:00 · 599 阅读 · 0 评论 -
一步步学汇编(一)内存存取和debug
<br />实践我第一天的承诺,今天看了点汇编,做了点笔记,觉得有意思的,重要的就记下来了。<br />还是从基础的8086开始。虽然现在计组合嵌入式学校里教的都是arm和mips的,但是还是觉得8086最经典,下面是我今天的笔记:<br /> <br /> <br />关于8086cpu的物理地址给出:<br />CPU通过地址总线送入存储期的必须是一个内存单元的物理地址,在cpu向<br />地址总线上发送物理地址之前,必须在内部先形成这个物理地址。<br />机器的寻址能力到底由什么决定呢?<br /原创 2011-03-27 20:53:00 · 1553 阅读 · 0 评论 -
一步步学汇编(十一)内中断
<br />一步步学汇编(十一)内中断<br />中断:CPU不再接着(刚执行完得指令)向下执行,而是转去处理这个特殊的<br />信息<br />CPU用8位的中断类型码通过向量表找到相应的中断处理程序的入口地址。<br />中断向量:中断处理程序的入口地址<br />在8086CPU的机子中在内存0000:0000到0000:03E8的1000个单元中存放中断<br />向量表<br />一个表项存放一个中断向量,占两个字,高地址字存放段地址,低地址字存放<br />偏移地址<br />中断过程:<br原创 2011-04-10 19:48:00 · 523 阅读 · 0 评论