前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【汇编语言王爽】学习笔记-p40-p54

【汇编语言王爽】学习笔记-p40-p54

作者头像
20岁爱吃必胜客
发布2022-11-13 09:52:10
3170
发布2022-11-13 09:52:10
举报
文章被收录于专栏:进步集
在这里插入图片描述
在这里插入图片描述

通过点的形式 把立即数写到外面 对比c语言

在这里插入图片描述
在这里插入图片描述

结构体名字 数组名称 都相当于 基址bx;然后,用idata来定位结构体中的某一个数据项, 然后yao.team[1],里面的【1】也就相当于si

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

div除法指令

被除数:默认放在ax 或者dx ax

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

内存中实施除法

在这里插入图片描述
在这里插入图片描述

dup 设置重复的数据 db 3 dup(0)

db dw dd

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

流程转移-导学

在这里插入图片描述
在这里插入图片描述

转移指令 如jmp—可以修改ip或者同时修改cs和ip

分类 段内转移 段间转移

在这里插入图片描述
在这里插入图片描述

无条件转移jmp 条件转移jcxz 循环指令loop 过程 中断

offset 去的标号的偏移地址 offset 标号

在这里插入图片描述
在这里插入图片描述

在程序运行时,把某个指令复制到另一个地址—非常厉害的能力!

添加两条指令,让改程序在运行中将s处的一条指令复制到s0处 s: mov ax,bx mov si,offset s mov di,offset s0 mov cx,cs:[si] mov cs:[di],cx s0: nop nop

在这里插入图片描述
在这里插入图片描述

无条件转移jmp

在这里插入图片描述
在这里插入图片描述

根据位移进行转移—jmp short s–跳转相对位置—可正可负 也不用自己算 用补码表示 八位位移由编译程序在编译时算出

jmp short s

立即数在机器指令中是有所体现的

在这里插入图片描述
在这里插入图片描述

近转移 jmp near ptr 标号

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

远转移far ptr s

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

转移地址在内存中的jmp word ptr ;jmp dword ptr

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

jmp 小结

在这里插入图片描述
在这里插入图片描述

注意:不能直接jmp2000:0100这样的 debug行 别的不行

在这里插入图片描述
在这里插入图片描述

jcxz :j跳转 cx zero 当cx等于0 跳转–转移的是位移

在这里插入图片描述
在这里插入图片描述

loop指令: 位移:要跳转的指令地址减去loop指令自己的下一条指令的首地址即:例如06-0a=-4----编译成为补码=FC

在这里插入图片描述
在这里插入图片描述

段内转移 都是一些相对转移 相对位移 有不少好处方便了浮动装配

在这里插入图片描述
在这里插入图片描述

模块化程序设计-主程序调用 子程序call,返回ret-返回到调用call的下一条语句继续执行下去–实质 修改ip

在这里插入图片描述
在这里插入图片描述

call 标号 ----调用子程序-cpu进行了两步操作:1将当前的ip或者ip和cs压入栈中(call指令的下一条地址);2转移到标号处执行指令

call push ip ip=ip+16位位移

在这里插入图片描述
在这里插入图片描述

段间转移 call far ptr 标号;

1 cs ip 都压栈 再跳转

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

转移到寄存器内的地址call ax

在这里插入图片描述
在这里插入图片描述

call word ptr 内存单元地址

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

返回指令ret–相当于pop ip用栈中的数据 修改ip内容,从而实现近转移和

在这里插入图片描述
在这里插入图片描述

retf—pop ip; pop cs 实现远转移返回

在这里插入图片描述
在这里插入图片描述

例子 call 和 ret

在这里插入图片描述
在这里插入图片描述

call和ret 解决问题 套路;第二个ret返回的时候返回到第一个call的当时的ip所指向的指令–即第一个call下面的指令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

调用子程序call 逐步返回

在这里插入图片描述
在这里插入图片描述

计算2的n次

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

为call ret 指令 设置栈

call以后压栈ip 改ip

在这里插入图片描述
在这里插入图片描述

乘法 mul bl 对比 除法只用给出 除数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

汇编语言的模块化程序设计–参数和结果的传递问题

在这里插入图片描述
在这里插入图片描述

常用 寄存器存 参数和结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

内存单元批量传递数据

在这里插入图片描述
在这里插入图片描述

也很常用 栈 传递参数 压栈 弹栈

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

寄存器冲突问题—编写子程序避免冲突寄存器—方案:在子程序的开始,将要用的寄存器的内容都保存起来,子程序返回前再恢复

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 通过点的形式 把立即数写到外面 对比c语言
  • 结构体名字 数组名称 都相当于 基址bx;然后,用idata来定位结构体中的某一个数据项, 然后yao.team[1],里面的【1】也就相当于si
  • div除法指令
  • 内存中实施除法
  • dup 设置重复的数据 db 3 dup(0)
  • db dw dd
  • 流程转移-导学
  • 转移指令 如jmp—可以修改ip或者同时修改cs和ip
  • 无条件转移jmp 条件转移jcxz 循环指令loop 过程 中断
  • offset 去的标号的偏移地址 offset 标号
  • 在程序运行时,把某个指令复制到另一个地址—非常厉害的能力!
  • 无条件转移jmp
  • 根据位移进行转移—jmp short s–跳转相对位置—可正可负 也不用自己算 用补码表示 八位位移由编译程序在编译时算出
  • 近转移 jmp near ptr 标号
  • 远转移far ptr s
  • 转移地址在内存中的jmp word ptr ;jmp dword ptr
  • jmp 小结
  • 注意:不能直接jmp2000:0100这样的 debug行 别的不行
  • jcxz :j跳转 cx zero 当cx等于0 跳转–转移的是位移
  • loop指令: 位移:要跳转的指令地址减去loop指令自己的下一条指令的首地址即:例如06-0a=-4----编译成为补码=FC
  • 段内转移 都是一些相对转移 相对位移 有不少好处方便了浮动装配
  • 模块化程序设计-主程序调用 子程序call,返回ret-返回到调用call的下一条语句继续执行下去–实质 修改ip
  • call 标号 ----调用子程序-cpu进行了两步操作:1将当前的ip或者ip和cs压入栈中(call指令的下一条地址);2转移到标号处执行指令
  • 段间转移 call far ptr 标号;
  • 转移到寄存器内的地址call ax
  • call word ptr 内存单元地址
  • 返回指令ret–相当于pop ip用栈中的数据 修改ip内容,从而实现近转移和
  • retf—pop ip; pop cs 实现远转移返回
  • 例子 call 和 ret
  • call和ret 解决问题 套路;第二个ret返回的时候返回到第一个call的当时的ip所指向的指令–即第一个call下面的指令
  • 调用子程序call 逐步返回
  • 为call ret 指令 设置栈
  • 乘法 mul bl 对比 除法只用给出 除数
  • 汇编语言的模块化程序设计–参数和结果的传递问题
  • 常用 寄存器存 参数和结果
  • 内存单元批量传递数据
  • 也很常用 栈 传递参数 压栈 弹栈
  • 寄存器冲突问题—编写子程序避免冲突寄存器—方案:在子程序的开始,将要用的寄存器的内容都保存起来,子程序返回前再恢复
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档