随笔分类 - 汇编语言
摘要:具有输入和输出参数的嵌入汇编的基本格式为:asm(“汇编语句” : 输出寄存器 : 输入寄存器 : 会被修改的寄存器 );在执行代码时,如果不希望汇编语句被gcc 优化而挪动地方,就需要在asm 符号后面添加volatile 关键词: asm volatile (……);或者更详细的说明为: ...
阅读全文
摘要:1.键盘输入将引发9号中断,BIOS提供了int 9中断例程。CPU在9号中断发生后,执行int 9中断例程,从60h端口读出扫描码,并将其转化为相应的ASCII码或状态信息,存储在内存的指定空间(键盘缓冲区或状态字节)中。一般的键盘输入,在CPU执行完int 9中断例程后,都放到了键盘缓冲区中。键...
阅读全文
摘要:1.我们可以使用一种标号,这种标号不但表示内存单元的地址,还表示了内存单元的长度,即表示在此标号处的单元,是一个字节单元,还是字单元,还是双字单元。如 a:db1,2,3,4,5,6,7,8改写为adb1,2,3,4,5,6,7,8 b:dw0 改变为bdw0使用不带“:”的标号,它们是同时...
阅读全文
摘要:外中断是指那些不再CPU内部产生的中断,即通过端口与cpu通信的外设产生的中断。可屏蔽中断是CPU可以不响应的外中断不可屏蔽中断是CPU必须响应的中断,其中断类型码都是2sti,cli可以屏蔽中断,让一些如改变中断向量的操作安全进行。1. 可屏蔽中断,CPU根据标志寄存器IF位决定是否响应中断,IF...
阅读全文
摘要:1.在访问端口的时候,CPU通过端口地址来定位端口。因为端口所在的芯片和CPU通过总线相连,所以,端口地址和内存地址一样,通过地址总线来传送。2.在PC系统中,CPU最多可以定位64KB个不同的端口,则端口地址的范围为0~655353.对端口的读写不能用mov,push、pop等内存读写指令。端口的...
阅读全文
摘要:8086 CPU 中寄存器总共为 14 个,且均为 16 位 。即AX,BX,CX,DX,SP,BP,SI,DI,IP,FLAG,CS,DS,SS,ES共 14 个。而这 14 个寄存器按照一定方式又分为了通用寄存器,控制寄存器和段寄存器。通用寄存器:AX,BX,CX,DX 称作为数据寄存器:AX ...
阅读全文
摘要:int指令格式:int nn为中断类型码,它的功能是引发中断过程。CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下:1)取中断类型码n;2)标志寄存器入栈,IF=0,TF=0;3)CS、IP入栈4)(IP)=(n*4),(CS)=(n*4+2)从此处转去执行n号中断的中断处理...
阅读全文
摘要:中断的意思是指,CPU不再接着(刚执行完的指令)向下执行,而是转去处理这个特殊信息。注意,这里所说的中断信息,是为了便于理解而采用的一种逻辑上的说法。它是对几个具有先后顺序的硬件操作所产生的事件的统一描述。“中断信息”是要求CPU马上进行某种处理,并向所要进行的该种处理提供了必备的参数的通知信息。中...
阅读全文
摘要:1514131211109876543210 NTIOPLOFDFIFTFSFZF AF PF CF未使用嵌套标志I/O权限标志占2位溢出标志方向标志中断允许标志单步标志符号标志零标志未使用辅助标志未使用奇偶标志未使用进位标志1.CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理机,个数和结构...
阅读全文
摘要:1.call和ret指令都是转移指令,它们都修改IP的值,或同时修改CS和IP的值。它们经常共同用语实现子程序的设计。2.ret指令用栈中的数据,修改IP的内容,从而实现近转移。3.retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移。4.CPU执行ret指令时,(1)(IP)=((ss)...
阅读全文
摘要:1.可以修改IP,或同时修改CS和IP的指令统称转移指令。有两种类型转移: (1)只修改IP是段内转移,如:jmp ax (2)修改CS和IP是段间转移,如:jmp 1000:02.操作符offset是一个伪指令,它的功能是取得标号的偏移地址。3.jmp为无条件转移,可以只修改IP,也可以同时修改C...
阅读全文
摘要:一、没有操作数的指令,指令长度为1字节。如es:ds:cbwxlat等。二、操作数只涉及寄存器的指令,指令长度为2字节。如mov al,[si]mov ax,[bx+si]mov ds,ax等。三、操作数涉及内存地址的指令,指令长度为3字节。如mov al,[bx+1]mov ax,[bx+si+3...
阅读全文
摘要:1.为了描述上的简洁,在以后的课程中,将使用两个描述性的符号reg来表示一个寄存器,用sreg表示一个段寄存器。reg的集合包括:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di;sreg的集合包括:ds,ss,cs,es.8086CPU处理数据的两个基...
阅读全文
摘要:1.and指令:逻辑与指令,按位进行与运算。与1不变,与0变0,可将对象相应位设为0。2.or指令:逻辑或指令,按为进行或运算。或1变1,或0变0,可将对象位设为1。3.[BX+idata]的几种表现形式:mov ax,[200+bx]mov ax,200[bx]mov ax,[bx].2004.S...
阅读全文
摘要:将数据、代码、栈放入不同的段:把这些内容全部放在代码段中无疑会让程序显得混乱而且难以管理和操作,容易出错,所以,要把数据、代码和栈放入不同的段中,这也体现了软件工程中“分而治之”的思想。assume cs:code, ds:data, ss:stackdata segment dw 0123h...
阅读全文
摘要:1. 栈有2个基本操作:入栈、出栈2. 栈顶的元素总是最后入栈,最先出栈;后进先出。3. 8086CPU提供入栈和出栈的指令,最基本的两个是 PUSH(入栈) 和 POP(出栈) push ax 表示将AX寄存器的内容送入栈中, pop ax 表示从栈顶取出数据送入AX寄存器中。 8086CPU的...
阅读全文
摘要:-r 功能:显示所有寄存器内容,以十六进制形式显示cpu内部个寄存器的值;以符号形式显示标志寄存器的各标志位(除tf外)的值;并将CS:IP所指的内存内容反汇编成一条指令,可视为将要执行的指令。如:-r回车AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=00...
阅读全文
摘要:在CPU中,程序员能够用指令读写的部件只有寄存器,程序员可以通过改变寄存器中的内容实现对CPU的控制。CPU从何处执行指令是由CS、IP中的内容决定的,程序员可以通过改变CS、IP中的内容来控制CPU执行目标指令。我们如何改变CS、IP的值呢?显然,8086CPU必须提供相应的指令。我们如何修改AX...
阅读全文
浙公网安备 33010602011771号