当前位置: 首页 > news >正文

汇编语言程序设计基础知识二

五、顺序结构

1、程序设计的步骤

1、分析问题

2、建立数据模型

3、设计算法

4、编制程序

5、上机调试

2、流程图的应用

3、程序的基本控制结构

1、顺序结构:程序顺序执行,不发生跳转

2、分支结构:程序在执行过程中发生跳转

3、循环结构:程序重复执行多次

4、数据传送指令

对于双操作数的要求:

(以MOV指令为例)

MOV 寄存器,立即数

MOV 寄存器,寄存器

MOV 寄存器,内存单元

MOV 内存单元,寄存器

MOV 内存单元,立即数

不能两个操作数都是内存单元

CS不能用作目标操作数

IP寄存器不能做操作数

用BX、SI、DI间接寻址时,默认的段寄存器为DS

立即数不能做目标操作数

立即数不能直接送入段寄存器

源操作数与目标操作数数据类型必须相同

段寄存器之间不能互相传送

dest:目标操作数

src:源操作数

格式说明对标志位的影响
MOVMOV dest,src将源操作数(字节或字)传送到目标操作数中没有
PUSHPUSH src堆栈指针先减2,再将源操作数存入,(必须是字数据)(src必须是字类型)没有
POPPOP dest先将栈顶中存放的字数据存入dest中,再将堆栈指针加2 (dest必须是字类型)没有
XCHGXCHG dest,src交换(同一条指令中,数据类型必须一致)没有
XLATXLAT换码(查表)指令,BX和AL内容之和指出的内存字节单元的内容放到AL中没有
LEALEA dest,src取有效地址,将源操作数地址的偏移量,即有效地址传送到dest中(dest可以是任一16位通用寄存器,但不能是IP和段寄存器)没有
LDSLDS dest,src加载数据段寄存器,将src指出的连续两个字的内容,高位字为段地址送入DS,低位字为偏移量送入dest没有
LESLES dest,src加载附加段寄存器,将src指出的连续两个字的内容,高位字为段地址送入ES,低位字为偏移量送入dest没有

5、算术运算指令

格式说明对标志位的影响
ADDADD dest,src加法,结果存入目标操作数中CF、OF、AF、PF、SF、ZF
ADCADC dest,src带进位的加法,结果存入目标操作数中,dest = dest + src + CF,主要用于多字节相加CF、OF、AF、PF、SF、ZF
INCINC dest增一指令
SUBSUB dest,src减法:dest = dest - srcCF、OF、AF、PF、SF、ZF
SBBSBB dest,src带进位的减法,dest = dest - src - CF,主要用于多字节相减CF、OF、AF、PF、SF、ZF
DECDEC dest自减不影响CF,其与都影响
NEGNEG dest取补指令CF、OF、AF、PF、SF、ZF
CMPCMP dest,src从目标操作数中减去源操作数,但结果不储存,只保存对标志位的影响CF、OF、AF、PF、SF、ZF

6、逻辑操作指令

格式说明对标志位的影响
NOTNOT dest对每一位求反没有
ANDAND dest,src逻辑与,一个数与自己进行逻辑与,可以用来影响标志位;可以借助某个指定的操作数来将另一个操作数中的某个位清零CF、OF、AF、PF、SF、ZF
OROR dest,src逻辑或,可以用来是操作数中的某些位置位CF、OF、AF、PF、SF、ZF
XORXOR dest,src异或,可用来使操作数中的某些位取反CF、OF、AF、PF、SF、ZF
TESTTEST dest,src将两个操作数进行逻辑与,但不改变两个操作数的原始值,并将CF和OF置零CF、OF、AF、PF、SF、ZF

7、移位操作指令

逻辑移位(SHL、SHR)

逻辑移位指令 dest,cnt

cnt可以为1,但如果大于1,则需要存放到CL中,再进行移位

执行移位指令时,一位一移,过程中源操作数的最高位发生过变化,OF为1,否则为0

左移时,最高位送入CF,右移时,最低位送入CF

不带进位循环移位(EOL、ROR)

带进位循环移位(RCL、RCR)

8、状态标志位操作指令

清0置1取反
CFCLCSTCCMC
DFCLDSTD
IFCLISTI

9、简单的I/O功能调用

六、分支结构程序

1、转移指令

1.1、无条件转移指令

JMP targ

不影响标志位,可以转到内存中存放的任何程序段,targ可以是直接标号、寄存器间接寻址、存储器间接寻址

1.2、条件转移指令

根据执行该指令前CPU中状态标志位的状态决定程序执行的流程

在比较玩两个数的大小后根据比较的结果决定是否进行转移,实际是测试不同的标志位

1.2.1、单条件转移指令
条件转移指令
CF = 1JC
CF = 0JNC
ZF = 1JZ/JE
ZF = 0JNZ/JNE
SF = 1JS
SF = 0JNS
OF = 1JO
OF = 0JNO
PF = 1JP/JPE
PF = 0JNP/JPO
1.2.2、带符号数和无符号数的条件转移指令

条件:使用前用过CMP、SUB、SBB指令

无符号数标志位带符号数标志位
A < BJBCF=1JLSF xor OF = 1
A <= BJBECF=1||ZF=1JLE((SF xor OF)|| ZF)=1
A > BJACF=0||ZF=0JG((SF xor OF)||ZF)=0
A >= BJAECF=0JGESF xor OF = 0
A = BJEZF=1JEZF=1
A != BJNEZF=1JNEZF=1
http://www.lryc.cn/news/91761.html

相关文章:

  • 一文详解!Robot Framework Selenium UI自动化测试入门篇
  • Java 9 模块化系统详解
  • Windows定时执行Python脚本
  • 数据科学简介:如何使用 Pandas 库处理 CSV 文件
  • 面试专题:java多线程(2)-- 线程池
  • Linux文件权限及用户管理
  • 以AI为灯,照亮医疗放射防护监管盲区
  • Golang单元测试详解(一):单元测试的基本使用方法
  • 数据库的序列
  • 2022年回顾
  • 40亿个QQ号,限制1G内存,如何去重?
  • 【django】django的orm的分组查询
  • MySQL5.8在Windows下下载+安装+配置教程
  • Flask or FastAPI? Python服务端初体验
  • 《计算机组成原理》唐朔飞 第7章 指令系统 - 学习笔记
  • Linux:apache网页优化
  • 涨点技巧:注意力机制---Yolov8引入Resnet_CBAM,CBAM升级版
  • solr教程
  • 基于java语言编写的爬虫程序
  • UM2082F08 125k三通道低频无线唤醒ASK接收功能的SOC芯片 汽车PKE钥匙
  • 【SpringBoot_Project_Actual combat】 Summary of Project experience_需要考虑的问题
  • 恒容容器放气的瞬时流量的计算与合金氢化物放氢流量曲线的计算
  • 网络编程_UDP通信
  • windows修改Pycharm的右键打开方式
  • Python入门(十四)函数(二)
  • Allure测试报告定制全攻略,优化你的Web自动化测试框架!
  • 推荐系统算法详解
  • 企业网站架构部署与优化之LAMP
  • 攻防世界安卓逆向练习
  • 自然语言处理从入门到应用——自然语言处理的语言模型(Language Model,LM)