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(标志寄存器)中各个二进制位的变化 如图

 

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

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

溢出标志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条语句执行的结果

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

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

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

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

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

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

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

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


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
编写如下程序,并在机器上调试成功。程序采用菜单式选择,可以接收用户从键盘输入的五个命令(1-5),各命令功能分别为: (1)按下“1”键,完成字符串小写字母变成大写字母。 用户输入一由英文大小写字母或数字0-9组成的字符串(以回车结束),程序逐个检查字符串各字符,将原串小写字母变成大写字母,其他字符不变,并在屏幕上显示。用户按任一键,重做,按ESC键,返回主菜单。 (2)按下“2”键,完成找最大值(二选一)。 a.接收用户输入的可显示字符串(以回车结束),程序将其ASCII码值最大的字符显示出来; b.接收用户输入若干个无符号8位数(以空格或逗号为分隔符,以回车结束),程序将其最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。 (3)按下“3”键,完成排序(二选一)。 a.接收用户输入的可显示字符串,以回车结束。程序按ASCII码值大小由大到小排序并输出显示; b.接收用户输入若干个有符号8位数(以空格或逗号为分隔符,以回车结束),程序将其最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。 (4)按下“4”键,显示时间。 首先提示用户对时,即用户输入时、分、秒(以空格或逗号为分隔符,以回车结束),然后,在屏幕上不断显示时间,格式为: XX(时): XX(分): XX(秒) 最好定点显示。用户按任一键,重新对时,按ESC键,返回主菜单。 (5)按下“5”键,结束程序运行,返回系统提示符。 上述题目代码,之前在网上找到过类似的可总是出问题,编译器出问题,代码运行出问题,这是完全测试过的,应该没有问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值