汇编语言学习笔记

2019-03-10 15:59

汇编语言学习笔记 ---傻瓜学汇编

前言

当我在学汇编的时候发现一到了实际编程就发现学过的那些指令串不起来,什么浮点数啊整数啊,怎么跳转啊,怎么循环啊,脑袋立马变成浆糊。下面的文档是我的学习经历, 希望对初学者在学习加密解密,软件调试,单片机编程有点帮助。

目录

1. 编程环境的搭建

2. 深入理解汇编语言的数据 3. 顺序程序设计 4. 分支结构程序设计 5. 循环

6. 数组及指针 7. 函数 8. 结构 9. 综合运用 10. 参考文献

一:编程环境的搭建

首先装好masm32v10 和windbg,和editplus,然后在editplus中输入下面的程序,具体的请参考罗云彬的那本书,里面有详尽的说明,编译运行看看: .386 .model flat,stdcall option casemap:none

includelibmsvcrt.lib

printf proto C :VARARG .data

msg db \

.code start: call main ret main proc push offset msg call printf add esp,4 push offset msg

end call printf add esp,4 ret

mainendp start 下面是运行结果:

这里输出两行消息主要是我在写这个最简单的程序的时候发现他不换行,于是我在数据定义后面我加了“0ah,0dh”,呵呵,就是回车换行的十六进制表示,你也可以用其他方法试试, 程序就不多解释了,后面会有更多的解释,不过你一定要走到这以步,才能进行下一章。

2.深入理解汇编语言的数据

整数常量及变量,先看一段很简单的汇编程序: .386

.model flat,stdcall option casemap:none

includelibmsvcrt.lib

printf proto C :VARARG .data

PRICE EQU 30 msg1 db \.code start: call main ret main proc local num:dword local total:dword mov num,10 mov eax,num imul eax,eax,PRICE mov total,eax push offset msg1 call printf add esp,4 ret main endp end start

程序的意思很简单就是在屏幕上打印出某个东西的价格,如过要你拿笔和纸算,拿你肯定很快就能算出来,但你让电脑怎么算呢?当电脑执行到第一个语句的时候,也就是num=10, 它就把10放到某个地方并且记住这个值,寄存器或者内存,呵呵,它也就这两个地方,为什么要这么做呢?因为后面要用它来计算啊,为了算出这个值,电脑好的办法就是放在它的内存里,为什么不是寄存器?因为寄存器太少了,就那么几个,呵呵,所以了它就把10存在一个叫num的内存里,注意了哦,num是程序里的变量名,是存中里的一个位置的名称,它的值是10,你可能会问,不起名不行么?行,等下在调试器中你看到的就是没名的。来看看它在调试器中的样子:

num变成了[ebp-4]了,现在你想象有个几千行的程序如果都用[ebp-4]这样的名字的话,那我们会疯的,所以汇编程序就让我们给程序里面的变量起个直观的名字,而不是用具体的数字去让你去记住变量内存的位置。程序中imul eax,eax,1eh中的1eh就是个整形常量,也就是30.现在你应该对常量和变量有点感觉了吧。

再看个例子: .386

.model flat,stdcall option casemap:none

includelib msvcrt.lib

printf proto C :VARARG .data

a db 12h b dw 1234h c1 dd 12345678h msg1 db \ number is=%xh\.code start: call main ret

main proc

mov al,a cbw cwde push eax push offset msg1 call printf add esp,8 mov ax,word ptr a cwde push eax push offset msg1 call printf add esp,8 mov eax,dword ptr a push eax push offset msg1 call printf add sp,8 ret main endp end start 首先,你得想a,b,c1三个变量在程序中到底是怎么存的,是12 12 34 12 34 56 78,还是 78 56 34 12 34 12 12呢?呵呵,用调试器载入程序看看就知道了:


汇编语言学习笔记.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:遥远的爱—黄林芳

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: