cpu 执行程序的过程(微机原理)

自己所做的整理 欢迎指正

       以一个小程序为例

   1:mov ax,1234 ; 将1234传送到ax累加器中 
   2:add ax,fedc;  1234与fedc相加结果存放在ax中
   3:mov bx,5678; 将5678传送到bx寄存器中
   4:mov ss,bx;   将bx中的5678传送到ss中去
   5:inc bx;      5678加1
   6:mov ds,bx;   将5679传送到ds数据段寄存器
   7:inc bx;      567a加1
   8:mov di,bx;  将bx中的内容传送到di中
   9:mov [di],ax;将ax中的内容传送到地址为567b的位置中
   10:inc bx;bx中567b加1
   11:inc di;di中567b加1
   12:mov [di],bx;将bx中的内容传送到地址为di的地址中去
   13:mov cx,6666;将6666传送到cx寄存器中去

  1)输入完源程序之后,回车退回到debug的命令行状态,然后使用-t命令,单步执行并观察第二条语句执行前、后flag register(标志寄存器)中各个二进制位的变化 如图

cpu 执行程序的过程(微机原理)_第1张图片

 

寄存器发生变化有如下解释

标志寄存器每一位的状态表示如下

溢出标志OF(Over flow flag)            OV(1)      NV(0)

方向标志DF(Direction flag)            DN(1)      UP(0)

中断标志IF(Interrupt flag)            EI(1)      DI(0)

符号标志SF(Sign flag)                 NG(1)      PL(0)

零标志ZF(Zero flag)                   ZR(1)      NZ(0)

辅助标志AF(Auxiliary carry flag)      AC(1)      NA(0)

奇偶标志PF(Parity flag)               PE(1)      PO(0)

进位标志CF(Carry flag)                CY(1)      NC(0)

AF为辅助进位标志,本次运算结果,低四位向高四位有进位,AF=1.。所以由NA变为AC

     Cf为进位标志。该程序中1234加fedc运算结果的最高位产生一个进位。所以由nc变为cy

2)用-t命令单步执行 然后观察第9条语句执行的结果

cpu 执行程序的过程(微机原理)_第2张图片

  3)认真分析以上程序段的第912条语句传送的操作数分别是什么?这两条指令执行之后,找到操作数最后的存放位置。当找到了操作数之后,你观察这两次存放的数据都在吗?还是丢了一部分?这说明了什么?

    答:第9条操作数是ax 中的内容 即为1110

        第12条操作数是bx中的内容即为567b

        第9和12均为间接寻址。所以[di]存放的是要存储的地址这两次存放的数据都在。 这是因为间接寻址中第11步中di加1,表示第  12步中存储在另一个地址中,所以它们不会相互影响。

4)理解汇编语言中源程序和机器语言中机器代码,它们之间的区别:

1. 机器语言 机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等特点。

   2.汇编语言  汇编语言是一种用助记符表示的仍然面向机器的计算机语言。汇编语言亦称符号语言。汇编语言采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。

5)整个实验过程附图如下:


cpu 执行程序的过程(微机原理)_第3张图片

你可能感兴趣的:(cpu 执行程序的过程(微机原理))