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

news/2024/11/29 8:04:27/

五、顺序结构

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.ppmy.cn/news/198936.html

相关文章

FastBup:计算机视觉大型图像数据集分析工具

0.简介 官方github网址项目目的&#xff1a;当前大规模图像数据集一团糟&#xff0c;数据量巨大但质量堪忧&#xff0c;有时候训练集、验证集、测试集会有重复数据造成数据泄露。FastBup可以识别重复项、近似重复项、异常图像、错误标注、异常值&#xff0c;在cpu上就可以处理…

如何使用Java异常处理来优雅地处理各种异常情况?

在Java编程中&#xff0c;异常处理是一个非常重要的话题。良好的异常处理可以帮助我们更好地调试和排除代码中的错误&#xff0c;同时也可以提高代码的可读性、可维护性和稳定性。本文将详细介绍如何使用Java异常处理来优雅地处理各种异常情况。 异常分类 在Java中&#xff0…

web前端 --- BOM编程、DOM编程

BOM编程&#xff08;browser object model -- 浏览器对象模型&#xff09; BOM给JavaScript提供用来操作浏览器的若干的"方法" 操作 在 js 看来&#xff0c;一个完整的浏览器包含如下组件&#xff1a; window窗口 // 整个浏览器的窗口 |-- history …

戴尔7060安装win10系统教程

正常情况下用UltraISO制作启动盘&#xff0c;插入电脑&#xff0c;开机按下f12进行装机&#xff1b;但是戴尔7060发现找不到启动盘&#xff0c;解决办法uefi gui;如下&#xff1a; 1、制作U盘魔术师启动盘&#xff1a; 下载与制作参考连接&#xff1a; https://jingyan.baidu…

DAY780

如果我没记错的话&#xff0c;这应该是我在大学期间第二次发烧了&#xff0c;该怎么去形容这天气晴朗一天呢&#xff1f; 从早上到晚上&#xff0c;跑了四次医务室。去学校医务室的人看病的人只会多&#xff0c;不会少。第一次是早上九点多去的&#xff0c;那时候应该有四五个吧…

指纹图片调对比度 c语言,手动调整图片打印深浅(亮度/对比度 Windows OS)

文档标题&#xff1a;手动调整图片打印深浅(亮度/对比度 Windows OS) 文档代码&#xff1a;CHN-FP0548-1 最近修改日期&#xff1a;2020年11月19日 手动调整图片打印深浅(亮度/对比度 Windows OS) 说明&#xff1a; 通过打印机驱动设置图形打印的亮度和对比度&#xff0c;就可以…

linux卸载驱动命令,卸载打印机驱动程序 (Linux)

相关型号 ADS-1100W, ADS-1200, ADS-1600W, ADS-1700W, ADS-2100, ADS-2200, ADS-2600W, ADS-2700W, DCP-110C, DCP-115C, DCP-120C, DCP-130C, DCP-145C, DCP-1518, DCP-1519, DCP-155C, DCP-1608, DCP-1618W, DCP-1619, DCP-165C, DCP-185C, DCP-330C, DCP-350C, DCP-385C, D…

w ndows控制面板怎样打开,打开控制面板→设备和打印机(适用于Windows7)

文档标题&#xff1a;打开控制面板→设备和打印机(适用于Windows7) 文档代码&#xff1a;CHN-FP0700-1 最近修改日期&#xff1a;2019年9月30日 打开控制面板→设备和打印机(适用于Windows7) 操作步骤&#xff1a; 适用机型&#xff1a; DCP-B7520DW\DCP-B7535DW\PJ-673\PJ-623…