欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    汇编语言基础学习笔记.docx

    • 资源ID:8957409       资源大小:17.98KB        全文页数:9页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    汇编语言基础学习笔记.docx

    1、汇编语言基础学习笔记1.机器指令:0101010之类的二进制数。2.CUP把机器指令转换为 高低电平驱动(控制)计算机部件运行。3.汇编语言包括:a) 汇编指令(由翻译软件编译器翻译成机器指令)b) 伪指令(告诉翻译软件,汇编指令按什么步骤翻译)c) 符号指令:+ - * /(也由编译器执行)4.指令和数据都 2进制 形式存储在 内存当中。5.寄存器中 1(或2)个字节 能存放的 最大数是:a) 16进制:FFh(或FFFFh)b) 10进制:255(或65535) 所以,mov ax,65536 是错误的。 但是,mov ax,65535 add ax,2 /最后ax = 0001h; 本来

    2、应该是 1 00 01h,第一个1 为溢出 位(ax寄存器 放不下,但是不代表cpu就扔了, 而是存放到其他地方去了)mov ah,FFadd ah,2 /同理,ah = 01h; 本来应该为 1 01,但是第一位1, 但ah寄存器放不下,所以存放到了其他地方。6.通用寄存器:ax, bx, cx, dx;它们都是16位寄存器,可以分成两个独立的8位寄存器,可以存放一个字型数据(word = 2Byte)。 短地址寄存器:cs, ds, es, ss 偏移地址寄存器:bp, ip, sp, si, di, bx7.物理地址 = 短地址 * 10 + 偏移地址 cpu 将 cs:ip 所指向(组

    3、合成)的地址 中的数据 当作 指令!8.指令执行的过程:(1)cpu从si:ip所指向的内存地址中 读取指令,并将这个指令存放到指令缓存器中。(2)将:ip = ip + 所读指令的字节数(3)执行指令缓存器中的指令;回到步骤(1),重复这个过程。9.转移指令-jump(1)jump 2000:1000 /cs = 2000; ip = 1000;(2)jump 寄存器 /ip = 寄存器(中的值)ps:不能用 mov 指令和数据 直接修改 cs或ip 寄存器中的内容:mov cs,2000; /错!mov ip,1000; /错!对cs而言,可以用mov指令 间接 的修改:mov ax, 2

    4、000;mov cs, ax;10.汇编程序员,通过汇编指令 修改寄存器中的内容 来控制cpu, 从而控制计算机。11.debug 汇编指令调试工具(1)debug 调试指令:(a)r命令:查看、修改cpu寄存器的内容。格式:-r /查看所有寄存器中的内容 -r 寄存器 /只查看 指定 寄存器 中的内容(b)d命令:查看 内存中的内容。 格式:-d /查看当前cs:ip所指向的内存及其后连续 的79个内存单元中的内容 -d cs:ip /查看设定的cs:ip所指向的内存及其后连 续的79个内存单元 中的内容 -d cs:ip ip /查看设定的cs:ip所指向的内存 到 后一个 ip所指向的内

    5、存。(c)e命令:修改 内存中的内容。 格式:e cs:ip /修设定的cs:ip内存中的内容。(d)u命令:将当前cs:ip所指向的内存及后续内存中的机器指令翻译 成汇编指令,并显示出来。格式:-u -u cs:ip /将设定的cs:ip所指向的内存及后续内存中的机 器指令翻译成汇编指令,并显示出来。(f)t命令:执行一条机器指令。格式:-t /执行cs:ip 所指向内存中的指令(g)a命令:以 汇编指令 的格式在 内存 中写入一 条机器指令。格式:-a /向当前cs:ip所指向的内存中写入。(h)p(pass)命令:当cs:ip 指向循环体时,可以用p命令一次性运算完循环(i)g(go)命

    6、令: -g ip值 /直接运算到 cs:ip所指向的指令处。12.访问内存单元中数据 的方法:ds:偏移地址13.内存中数据的长度 由 寄存器的长度决定。例如:a) mov bx, 2000b) mov ds, bxc) mov ds:0, ax(或者 al) /若是ax,那么存放数据时就占用 2个字节;/若是al,就占用1个字节。d)mov ax,ds:0 /因为ax是16位,所以将ds:0和ds:1这两个连 续的内存单元中的内容存放到ax中。14.汇编指令总结:a) 移动指令:i. mov 寄存器,数据 /mov ax,1000hii. mov 寄存器,寄存器 /mov ax,bxiii.

    7、 mov 寄存器,内存单元 /mov ax,ds:1 内存单元长度由 寄存器大小决定iv. mov 内存单元,寄存器 /mov ds:0,axv. mov 段寄存器,寄存器 /mov ds,axvi. mov 寄存器,段寄存器 /mov ax,dsb) 运算指令:add指令:i. add 寄存器,数据 /add ax,1ii. add 寄存器,寄存器 /add ax,bxiii. add 寄存器,内存单元 /add ax,ds:0iv. add 内存单元,寄存器 /add ds:0,axsub指令:i. sub 寄存器,数据 /sub ax,1ii. sub 寄存器,寄存器 /sub ax,b

    8、xiii sub 寄存器,内存单元 /sub ax,ds:0iv. sub 内存单元,寄存器 /sub ds:0,ax15.程序的执行入口cs:ip所指向的内存单元! 16.栈:一段 用于存放字节型数据 的连续的内存空间。a) 既然是数据,那怎么对数据进行操作呢?i. push 寄存器 /寄存器大小得为 1个字!push 段地址:偏移地址 /取一个 字 大小的内存空间。上面两个指令表示:将寄存器/内存空间 中的数据 送入栈中。ii. pop 寄存器(或 段地址:偏移地址)同push指令类似,表示从栈顶取出数据送入 寄存器/内存空间。b) 上面所说”送入栈“”从栈顶取出“是根据什么呢?i. ss

    9、:sp 永远指向栈顶元素ii. push pop 指令操作的数据 是 ss:sp 所指向的 字型 内存空间中的数据。c) push 寄存器/内存空间 过程:i. sp = sp - 2ii. 将寄存器/内存空间 中的数据送入 ss:sp 指向的内存单元d) pop 寄存器/内存单元 过程:i. 将 ss:sp 指向的内存单元中的数据送入 寄存器/内存单元中ii. sp = sp + 217.栈,一段用于存放字型数据的内存空间,那它能有多大呢?我们不难想到,每次push或者pop都要涉及到 栈中的内存单元,所以,不妨思考下push、pop的运行过程每次push,sp都要减2,而sp是16位的寄存

    10、器,能表示的数的范围为:0fffffh,65536个数,与段地址一起 对应 65536个字节的存储单元,即对应65536/2 = 32768个 字 。所以,栈最大能达到 32768 个字。设置栈:a) 长度为16B:ss:0 + 10h = sp = 10h /10h = 16哦b) 长度为 32B:ss:0 + 20h = sp = 20h /20h = 32c) 最大长度65536B(32768个字): ss:0 + (ffff+1)h = sp = 0000h /本来为10000h,但装不下,取后四位(但还是表示10000h,那个1存放到其他地方了)当push 32768个元素后,sp

    11、= 0000,此时栈已经满了,如果再push ,那么sp - 2 = FFFE,也就是说这次push会覆盖之前存放的元素。18、总结a) 数据在哪里:内存中b) 怎么访问数据:i. ds:偏移地址ii. ss:sp /指向栈中的数据c) 数据的长度:字节,字d) 数据的处理:add,sube) 数据存放到哪:通过 mov、ss:sp、ds:sp、push、pop 存放到内存中。f) 数据我们要安排存放到哪要安排指令放哪要安排g) 汇编语言包含:汇编指令、伪指令、符号体系h) 通过汇编指令修改 cpu中寄存器的内容,来控制整个计算机BX和loop指令1、bx寄存器和ds寄存器 一起表示 内存单元

    12、的 地址ds:bx2、loop指令a) loop是循环指令,与cs寄存器、循环体、标号 组成循环b) cx 表示循环次数c) 标号代表一个地址,这个地址所在的内存空间 存放着循环体。d) 执行循环的步骤:i. cs = cs - 1ii. cs不等于0,cs:ip跳转至标号处,执行循环体e) 循环格式:mov cx,idata /idata表示一个数 标号名:循环体loop 标号名 /先 -cs,再执行循环体3、关于复制:a) 最好不用pop这种方法:i. 1、pop 相当于是剪切而非复制 ii. 2、有的内存(如:ffff:0000ffff:000f) 中的数据 是不能被修改的,所以pop不

    13、了!b) 可以用这种土办法:先ds:bx取数据,再改变ds:bx放数据就这样循环。c) 用 es:bx 放数据!复制!i. 建立这样的思维:ds:bx 表示数据在哪里es:bx 表示数据去哪里其实,ds:bx、es:bx功能都相同,都指向 当前表示的内存单元。用ds:bx指向要取的内存、es:bx指向要存放的内存ii. 用法:mov es:bx,寄存器 /将es:bx所指向的内存中的数据 存 放到寄存器中。4、存放数据!可以用push!但是更应该考虑 es:bx! 出现 逆序 的时候 再用 push、pop 最好! 包含多个段的程序1、什么时候用什么样的段寄存器:偏移地址a) 指令在哪里 cs:ipb) 栈顶在哪里 ss:ipc) 数据在哪里 ds:bxd) 数据去哪里 es:bxe) cs:bx,这样也是可以的! f) ss:bx,这样可以吗?yes! 因为,表示 地址 的话:i. 段寄存器:idata /idata,偏移地址ii: 段寄存器:寄存器/这里的 段寄存器 只能是cs、ss、ds、es/这里的 寄存器 只能是 bx、si、bp、di2、mov、push、pop 指令 都是相当于赋值。 例如:mov ax,bx /只是将bx中的值赋值给ax,bx中的值并未改变。


    注意事项

    本文(汇编语言基础学习笔记.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开