用7ch中断例程完成jmp near ptr s指令的功能,用bx向中断例程传送转移位移。
摘要:应用举例:在屏幕的第12行,显示data段中以0结尾的字符串。 安装程序
阅读全文
posted @
2018-11-12 16:43
迷心迷
阅读(217)
推荐(0)
int指令
摘要: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
迷心迷
阅读(782)
推荐(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
迷心迷
阅读(1194)
推荐(0)
中断处理程序
摘要:中断处理程序的编写方法和子程序的比较相似,下面是常规的步骤: 1)保存用到的寄存器 2)处理中断 3)恢复用到的寄存器 4)用iret指令返回。 编程处理0号中断(除法错误) 1)编写可以显示"overflow!"的中断处理程序: do0; 2)将do0送入内存0000:2000处; 3)将do0的
阅读全文
posted @
2018-11-12 15:21
迷心迷
阅读(421)
推荐(0)
中断过程
摘要:我们可以用中断类型码,在中断向量表中找到中断处理程序的入口。找到这个入口地址的最终目的是用它设置CS和IP,使CPU执行中断处理程序。用中断类型码找到中断向量,并用它来设置CS和IP,这个工作是由CPU的硬件自动完成的。CPU硬件完成这个工作的过程被称为中断过程。 下面是8086CPU在收到中断信息
阅读全文
posted @
2018-11-12 15:13
迷心迷
阅读(790)
推荐(0)
中断
摘要:任何一种通用的CPU,例如8086,都具有一种能力,可以在执行完当前正在执行的指令之后,检测到从CPU外部发送过来的或内部产生的一种特殊信息,并且可以立即对所接收到的信息进行处理。这种特殊的信息,我们可以称为:中断信息。中断的意思是指,CPU不再接着(刚执行完的指令)向下执行,而是转去处理这个特殊信
阅读全文
posted @
2018-11-12 14:44
迷心迷
阅读(319)
推荐(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
迷心迷
阅读(522)
推荐(0)
标志寄存器在Debug中的表示
摘要:在Debug中,标志寄存器是按照有意义的各个标志位单独表示的。 下面列出Debug对我们已知的标志位的表示。
阅读全文
posted @
2018-11-12 13:23
迷心迷
阅读(377)
推荐(0)
pushf和popf
摘要:pushf的功能是将标志寄存器的值压栈,而popf是从栈中弹出数据,送入标志寄存器中。
阅读全文
posted @
2018-11-12 13:21
迷心迷
阅读(499)
推荐(0)
检测比较结果的条件转移指令
摘要:因为cmp指令可以同时进行两种比较,无符号数比较和有符号数比较,所以根据cmp指令的比较结果进行转移的指令也分为两种,即根据无符号数的比较结果进行转移的条件转移指令(它们检测zf、cf的值)和根据有符号数的比较结果进行转移的条件转移指令(它们检测sf、of和zf的值)。 下面是常用的根据无符号数的比
阅读全文
posted @
2018-11-12 11:57
迷心迷
阅读(1038)
推荐(0)
cmp指令
摘要:cmp是比较指令,cmp的功能相当于减法指令,只是不保存结果。cmp指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。 cmp指令格式: cmp 操作对象1,操作对象2 功能:计算操作对象1-操作对象2但并不保存结果,仅仅根据计算结果对标志寄存器进行设置
阅读全文
posted @
2018-11-12 10:42
迷心迷
阅读(3085)
推荐(1)
sbb指令
摘要:sbb是带借位减法指令,它利用了CF位上记录的借位值。 指令格式:sbb 操作对象1,操作对象2 功能:操作对象1=操作对象1-操作对象2-CF 比如指令sbb ax,bx实现的功能是: (ax)=(ax)-(bx)-CF sbb指令执行后,将对CF进行设置。
阅读全文
posted @
2018-11-12 10:36
迷心迷
阅读(1699)
推荐(0)
adc指令
摘要: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
迷心迷
阅读(1951)
推荐(1)
标志寄存器
摘要:CPU内部的寄存器中,有一种特殊的寄存器具有以下三种作用。 用来存储相关指令的某些执行结果 用来为CPU执行相关指令提供行为依据 用来控制CPU的相关工作方式 这种特殊的寄存器在8086CPU种,被称为标志寄存器(flag)。8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(P
阅读全文
posted @
2018-11-12 09:09
迷心迷
阅读(3778)
推荐(1)
将之前的Power idea公司的数据按照下图所示的格式在屏幕上显示出来。
摘要:之前的文章 示例代码如下 参考链接: https://blog.csdn.net/include_heqile/article/details/80629599
阅读全文
posted @
2018-11-08 15:39
迷心迷
阅读(828)
推荐(0)
数值显示
摘要:编程,将data段中的数据以二进制的形式显示出来。 子程序描述 名称:dtoc 功能:将word型数据转变为表示十进制的字符串,字符串以0为结尾符。 参数:(ax)=word型数据 ds:si指向字符串的首地址 返回:无 应用举例:编程,将数据12666以十进制的形式在屏幕的8行3列,用绿色显示出来
阅读全文
posted @
2018-11-08 14:25
迷心迷
阅读(184)
推荐(0)
解决除法溢出的问题
摘要:名称:divdw 功能:进行不会产生溢出的除法运算,被除数为dword型,除数为word型,结果为dword型。 参数:(ax)=dword型数据的低16位 (dx)=dword型数据的高16位 (cx)=除数 返回: (dx)=结果的高16位,(ax)=结果的低16位 (cx)=余数 应用举例:计
阅读全文
posted @
2018-11-08 13:51
迷心迷
阅读(472)
推荐(0)
显示字符串子程序
摘要:名称:show_str 功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串 参数:(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79), (cl)=颜色,ds:si指向字符串的首地址 返回:无 应用举例:在屏幕的8行3列,用绿色显示data段中的字符串。
阅读全文
posted @
2018-11-08 13:38
迷心迷
阅读(175)
推荐(0)
寄存器冲突的问题
摘要:我们在子程序中使用的寄存器,很可能在主程序中也要使用,造成了寄存器使用上的冲突。解决的方法是,在子程序的开始将子程序中所有用到的寄存器中的内容都保存起来,在子程序返回前再恢复。可以用栈来保存寄存器中的内容。 以后,我们编写子程序的标准框架如下: 子程序开始: 子程序中使用的寄存器入栈 子程序内容 子
阅读全文
posted @
2018-11-08 13:23
迷心迷
阅读(328)
推荐(0)
编程,将data段中的字符串转化成大写
摘要:assume cs:code data segment db 'conversation' data ends code segment start: mov ax,data mov ds,ax mov si,0 mov cx,12 call ...
阅读全文
posted @
2018-11-08 12:05
迷心迷
阅读(257)
推荐(0)