摘要: 一、ARM介绍 1) arm汇编中,程序下一步执行哪一条指令,是根据程序计数器(PC)的值来决定。 类比于8086的CS:IP的功能。 2) 8086属于CISC(复杂指令集),每条指令长度不等,arm是RISC(精简指令集),所有指令等长(例如都为32位)。 3)ARM指令代码一般分为5个区域: 阅读全文
posted @ 2018-11-12 19:07 迷心迷 阅读(1289) 评论(0) 推荐(0) 编辑
摘要: 应用举例:在屏幕的第12行,显示data段中以0结尾的字符串。 安装程序 阅读全文
posted @ 2018-11-12 16:43 迷心迷 阅读(211) 评论(0) 推荐(0) 编辑
摘要: int指令的格式为:int n,n为中断类型码,它的功能是引发中断过程。 CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下。 1)取中断类型码n; 2)标志寄存器入栈 ,IF=0, TF=0; 3) CS,IP入栈; 4)(IP)=(n*4), (CS)=(n*4+2)。 i 阅读全文
posted @ 2018-11-12 16:23 迷心迷 阅读(749) 评论(0) 推荐(0) 编辑
摘要: 基本上,CPU在执行完一条指令之后,如果检测到标志寄存器的TF位为1,则产生单步中断,引发中断过程。单步中断的类型码为1,则它所引发的中断过程如下: 1) 取得中断类型码1; 2)标志寄存器入栈,TF、IF设置为0 3)CS、IP入栈 4)(IP)=(1*4), (CS)=(1*4+2)。 Debu 阅读全文
posted @ 2018-11-12 15:57 迷心迷 阅读(1168) 评论(0) 推荐(0) 编辑
摘要: 中断处理程序的编写方法和子程序的比较相似,下面是常规的步骤: 1)保存用到的寄存器 2)处理中断 3)恢复用到的寄存器 4)用iret指令返回。 编程处理0号中断(除法错误) 1)编写可以显示"overflow!"的中断处理程序: do0; 2)将do0送入内存0000:2000处; 3)将do0的 阅读全文
posted @ 2018-11-12 15:21 迷心迷 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 我们可以用中断类型码,在中断向量表中找到中断处理程序的入口。找到这个入口地址的最终目的是用它设置CS和IP,使CPU执行中断处理程序。用中断类型码找到中断向量,并用它来设置CS和IP,这个工作是由CPU的硬件自动完成的。CPU硬件完成这个工作的过程被称为中断过程。 下面是8086CPU在收到中断信息 阅读全文
posted @ 2018-11-12 15:13 迷心迷 阅读(669) 评论(0) 推荐(0) 编辑
摘要: 任何一种通用的CPU,例如8086,都具有一种能力,可以在执行完当前正在执行的指令之后,检测到从CPU外部发送过来的或内部产生的一种特殊信息,并且可以立即对所接收到的信息进行处理。这种特殊的信息,我们可以称为:中断信息。中断的意思是指,CPU不再接着(刚执行完的指令)向下执行,而是转去处理这个特殊信 阅读全文
posted @ 2018-11-12 14:44 迷心迷 阅读(303) 评论(0) 推荐(0) 编辑
摘要: assume cs:code,ds:data data segment db 'Beginners All-purpose Symbolic Instruction Code.',0 data ends code segment begin: mov ax,data mov ds,ax mov si,0 ca... 阅读全文
posted @ 2018-11-12 13:31 迷心迷 阅读(513) 评论(0) 推荐(0) 编辑
摘要: 在Debug中,标志寄存器是按照有意义的各个标志位单独表示的。 下面列出Debug对我们已知的标志位的表示。 阅读全文
posted @ 2018-11-12 13:23 迷心迷 阅读(353) 评论(0) 推荐(0) 编辑
摘要: pushf的功能是将标志寄存器的值压栈,而popf是从栈中弹出数据,送入标志寄存器中。 阅读全文
posted @ 2018-11-12 13:21 迷心迷 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 因为cmp指令可以同时进行两种比较,无符号数比较和有符号数比较,所以根据cmp指令的比较结果进行转移的指令也分为两种,即根据无符号数的比较结果进行转移的条件转移指令(它们检测zf、cf的值)和根据有符号数的比较结果进行转移的条件转移指令(它们检测sf、of和zf的值)。 下面是常用的根据无符号数的比 阅读全文
posted @ 2018-11-12 11:57 迷心迷 阅读(991) 评论(0) 推荐(0) 编辑
摘要: cmp是比较指令,cmp的功能相当于减法指令,只是不保存结果。cmp指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。 cmp指令格式: cmp 操作对象1,操作对象2 功能:计算操作对象1-操作对象2但并不保存结果,仅仅根据计算结果对标志寄存器进行设置 阅读全文
posted @ 2018-11-12 10:42 迷心迷 阅读(2858) 评论(0) 推荐(1) 编辑
摘要: sbb是带借位减法指令,它利用了CF位上记录的借位值。 指令格式:sbb 操作对象1,操作对象2 功能:操作对象1=操作对象1-操作对象2-CF 比如指令sbb ax,bx实现的功能是: (ax)=(ax)-(bx)-CF sbb指令执行后,将对CF进行设置。 阅读全文
posted @ 2018-11-12 10:36 迷心迷 阅读(1605) 评论(0) 推荐(0) 编辑
摘要: adc是带进位加法指令,它利用了CF位上记录的进位值。 指令格式: adc 操作对象1,操作对象2 功能:操作对象1 = 操作对象1 + 操作对象2 + CF 例如指令 adc ax,bx实现的功能是: (ax)=(ax)+(bx)+CF 例如: 执行后,(ax)=4。adc执行时,相当于计算: ( 阅读全文
posted @ 2018-11-12 10:08 迷心迷 阅读(1844) 评论(0) 推荐(1) 编辑
摘要: CPU内部的寄存器中,有一种特殊的寄存器具有以下三种作用。 用来存储相关指令的某些执行结果 用来为CPU执行相关指令提供行为依据 用来控制CPU的相关工作方式 这种特殊的寄存器在8086CPU种,被称为标志寄存器(flag)。8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(P 阅读全文
posted @ 2018-11-12 09:09 迷心迷 阅读(3653) 评论(0) 推荐(1) 编辑