如何快速看懂汇编语言程序

如题所述

首先得了解汇编指令吧,其次得用机器的逻辑思考问题,明白其中的存储、累加、判断、转移等概念。

比如,1+2+....+100这样的问题,虽然我们可以给出公式计算,但机器并不知道,它只能知道,而且只能每次做一个加法,而且鉴于CPU的架构不能存所有的这些数值-如果这些数量不定的话更复杂,比如这些数是放在一个内存区域的,内存区域约定如下:第一个数表示总共有多少个数,后面是相应的数据,在这些数没有规律时是不能用公式的。
另外,许多CPU约定只有一个累加器(同时也是一个寄存器,假设它是寄存器AX),它允许从内存读一个数(MOV或者LD指令),只能进行内存数据加法(ADD [地址])。
于是我们只能这样,首先设置指针寄存器BX:
start: mov BX,#地址 ; 设置内存区域起始地址,保存在BX中
mov CX,[BX]; 取出总数到CX中,假设CX可以做简单递增或递减
dec CX ; 预减一次计数器,因为加法只需做CX-1次

inc BX

mov AX, [BX]; 取出数据
loop: inc BX ;递增BX,使之指向真实数据

ADD AX,[BX];用下一数据进行累加,并将结果保存在AX中

dec CX ;假定这个减法会影响标志位ZF
JNZ loop ;如果没有减到0就继续loop到这里之间的操作

mov [BX], AX; 保存累加结果到数据区的尾部
HALT ; 停机

可以看出,上述代码并不能告诉我具体结果是多少,除非我们通过工具去访问这一内存区域,于是一个系统会设计出来专门让我们进行基本的输入输出,把计算机的内部情况甚至内存情况通过I/O口送出来,这些IO设备,比如键盘负责接收我们的机器指令(可以是汇编结果,也可以是高级语言产生的二进制指令和数据流),把结果输出到打印机或者CRT这样的输出设备上(通常映射为端口,IO PORT)。这就是BIOS完成的工作,如int 8负责时钟,int 10负责屏幕,int 16负责键盘等等。更进一步,可以进一步封装称DOS调用,如int 21负责基本的输入输出包括文件操作等等。WINDOWS等操作系统则通过驱动层进行多级抽象提供操作界面给编程人员,编程人员再进一步封装出对话框或全屏文字菜单或流式(行式操作)操作界面给最终用户。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-16
有些人编写的小程序没有分段落、注释也不清楚。可以先将其编译链接生成可执行文件,再用SR.exe等反汇编工具进行反汇编。反汇编出的原程序会自动分段、自动加上很多的注释,可以帮助你快速看懂程序。
第2个回答  推荐于2018-03-12
找到汇编语言指令手册,看到什么指令不明白就查,这样肯定是最快的方法了,但是要求你有比较好的理解领悟能力。 首先你应该对基本的寄存器有个大概的了解,另外大致了解一下汇编程序基本的执行过程,这并不要花费多少时间的。追问

请问你花了多少时间精通的汇编,我发现指令我知道,太长了,我就看不懂了,怎么解决这个瓶颈啊。

追答

不要说我精通,不敢当。我只是掌握基本的了。我是在校学生,自己选的限选课《微机原理及应用》,就是这学期学的,我是自己对编程感兴趣,所以才选的。上课14周,每周4个学时,一共56学时,上机大概12个学时左右吧 光上课是不行的 自己平时要多练 我课下看的是王爽写的《汇编语言》,通熟易懂,可以看看。汇编指令多,只有多练才能掌握,不像高级语言那么简单,但是算法是一样,执行过程也很类似的。
给自己点信心,下点苦功夫,一定学的好,编程往往不是考验我们的智商,而是勇气和毅力。

本回答被提问者采纳
第3个回答  2012-06-22
就象学一门外语,要看懂,得先弄清楚英文单词的意思,然后是句话的意思,然后是一段话的意思,……最后整篇文章也就差不多弄明白了。所以要先熟悉那些常用的语句,一些基本的程序结构,一本可以象查英文单词一样查阅的汇编语言书。本回答被网友采纳
第4个回答  2015-10-30
个人没什么敲门,
看汇编程序,都是一行一行的看。
必须的记住每一条命令的功能,和效果。
然后就是看程序的命名,和注释了。

然后就是能操作看到实际的执行效果。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网