汇编指令总结
16位与32位汇编语言常用指令总结

16位与32位汇编语言常用指令总结在计算机编程领域,汇编语言被广泛应用于底层程序设计,直接操作计算机硬件。
其中,16位和32位汇编语言是常见的两种类型。
本文将总结这两种汇编语言中常用的指令,帮助读者更好地理解和应用它们。
一、16位汇编语言常用指令1. 数据传送指令- MOV:将数据从一个寄存器或内存位置传送到另一个寄存器或内存位置。
- XCHG:交换两个寄存器或内存位置的数据。
2. 算术运算指令- ADD/SUB:实现加法和减法运算。
- MUL/IMUL:实现无符号与有符号乘法运算。
- DIV/IDIV:实现无符号与有符号除法运算。
3. 逻辑运算指令- AND/OR/XOR:实现与、或、异或逻辑运算。
- NOT:对操作数进行按位取反操作。
4. 条件转移指令- JMP:无条件跳转到指定地址。
- JZ/JNZ:根据零标志位(ZF)的值进行跳转。
- JC/JNC:根据进位标志位(CF)的值进行跳转。
5. 循环指令- LOOP:根据计数器的值进行循环。
- JCXZ/JECXZ:根据CX/ECX寄存器的值进行循环。
二、32位汇编语言常用指令1. 数据传送指令- MOV:同16位汇编语言中的指令,用于数据传送。
- PUSH/POP:将数据推入栈或从栈中弹出。
2. 算术运算指令- ADD/SUB:同16位汇编语言中的指令,用于加法和减法运算。
- MUL/IMUL:同16位汇编语言中的指令,用于乘法运算。
- DIV/IDIV:同16位汇编语言中的指令,用于除法运算。
3. 逻辑运算指令- AND/OR/XOR:同16位汇编语言中的指令,用于逻辑运算。
- NOT:同16位汇编语言中的指令,用于按位取反。
4. 条件转移指令- JMP:同16位汇编语言中的指令,用于无条件跳转。
- JZ/JNZ:同16位汇编语言中的指令,根据零标志位(ZF)进行跳转。
- JB/JNB:根据低位借位标志位(CF)进行跳转。
5. 循环指令- LOOP:同16位汇编语言中的指令,用于循环操作。
实验二用机器指令和汇编指令编程实验总结

实验二用机器指令和汇编指令编程实验总结下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!实验二用机器指令和汇编指令编程实验总结1. 引言在本实验中,我们学习了使用机器指令和汇编指令编程的基本概念和技能。
常用汇编指令

常用汇编指令汇编语言是一种低级机器语言的抽象表示,通过使用汇编指令可以编写出与硬件相关的程序。
在计算机科学领域中,汇编指令是非常重要的,是理解计算机底层原理和实现的关键。
本文将介绍一些常用的汇编指令,以帮助读者更好地理解和应用这些指令。
一、数据传输指令1. MOV指令:MOV指令用于将数据从一个位置复制到另一个位置。
例如,MOV AX, BX将寄存器BX的内容复制到AX中。
2. LEA指令:LEA指令用于将内存地址加载到寄存器中。
例如,LEA BX, [SI+10]将[S1+10]的内存地址加载到寄存器BX中。
3. PUSH指令:PUSH指令用于将数据压入栈中。
例如,PUSH AX将AX中的数据压入栈中。
4. POP指令:POP指令用于从栈中弹出数据。
例如,POP BX将栈中的数据弹出到BX中。
二、算术运算指令1. ADD指令:ADD指令用于将两个操作数相加,并将结果存储在目标操作数中。
例如,ADD AX, BX将BX的值加到AX中。
2. SUB指令:SUB指令用于将源操作数的值从目标操作数中减去,并将结果存储在目标操作数中。
例如,SUB AX, BX从AX中减去BX的值。
3. MUL指令:MUL指令用于将源操作数与累加器中的值相乘,并将结果存储在累加器中。
例如,MUL BX将累加器的值与BX相乘。
4. DIV指令:DIV指令用于将累加器的值除以源操作数,并将商存储在累加器中,余数存储在另一个寄存器中。
例如,DIV BX将累加器的值除以BX。
三、逻辑运算指令1. AND指令:AND指令用于对两个操作数进行逻辑与运算,并将结果存储在目标操作数中。
例如,AND AX, BX将AX与BX进行逻辑与操作。
2. OR指令:OR指令用于对两个操作数进行逻辑或运算,并将结果存储在目标操作数中。
例如,OR AX, BX将AX与BX进行逻辑或操作。
3. NOT指令:NOT指令用于对操作数进行逻辑非运算,并将结果存储在目标操作数中。
汇编语言指令功能总结

汇编语言指令功能总结汇编语言是一种低级语言,主要用于编写机器码指令的程序。
在计算机科学领域中,汇编语言是非常重要的,因为它可以直接操作计算机的硬件资源。
本文将对汇编语言中常用的指令功能进行总结。
1. 数据传输指令数据传输指令用于将数据从一个位置传送到另一个位置。
常用的数据传输指令包括MOV(将数据从一个位置复制到另一个位置)、XCHG(交换两个位置的数据)、PUSH(将数据压入堆栈)、POP (将数据从堆栈中弹出)等。
2. 算术运算指令算术运算指令用于执行各种算术运算,例如加法、减法、乘法和除法。
常用的算术运算指令包括ADD(将两个数相加)、SUB(将一个数减去另一个数)、MUL(将两个数相乘)、DIV(将一个数除以另一个数)等。
3. 逻辑运算指令逻辑运算指令用于执行各种逻辑运算,例如与、或、非和异或。
常用的逻辑运算指令包括AND(对两个数执行与运算)、OR(对两个数执行或运算)、NOT(对一个数执行非运算)、XOR(对两个数执行异或运算)等。
4. 控制转移指令控制转移指令用于实现程序的跳转和循环执行。
常用的控制转移指令包括JMP(无条件跳转到指定的地址)、JZ(如果前一个运算结果为零则跳转)、JC(如果前一个运算结果进位则跳转)等。
5. 位操作指令位操作指令用于对数据的位进行操作。
常用的位操作指令包括AND(将两个数的对应位执行与运算)、OR(将两个数的对应位执行或运算)、NOT(取反操作)等。
6. 字符串操作指令字符串操作指令用于对字符串进行操作。
常用的字符串操作指令包括MOVSB(将一个字节从源地址复制到目的地址)、LODSB(将一个字节从源地址加载到AL寄存器)、STOSB(将AL寄存器中的值存储到目的地址)等。
7. 输入输出指令输入输出指令用于与计算机的输入输出设备进行交互。
常用的输入输出指令包括IN(从指定的端口读取数据)、OUT(将数据发送到指定的端口)等。
总结:汇编语言中的指令功能丰富多样,可以实现各种复杂的操作。
汇编语言指令大全

逻辑与运算指令 AND 格式: AND OPRD1,OPRD2 功能: 对两个操作数实现按位逻辑与运 算,结果送至目的操作数.本指令可以进 行字节或字的‘与’运算, OPRD1<--OPRD1 and OPRD2.
功能: 对两个未组合十进制数相减后存 若(AL) and 0FH > 9 或 AF=1
格式: AAS
2. 调整操作
Adjust for Subtraction)
1. 本指令影响标志位 CF 及 AF.
未组合十进制减法调整指令 AAS(ASCII 说明:
个位数).
的 AL 内容是乘积被 10 整除的余数(即
合十进制数进行调整,以便能用 DIV 指令 在 AH 中.
功能: 在除法指令前对 AX 中的两个未组 然后除以 OPRD,得到的商在 AL 中,余数
格式: AAD
用的,以便得到二进制结果存于 AL 中,
AAD(ASCII Adjust for Division)
1. AAD 指令是在执行除法 DIV 之前使
跑佑十飞晒贝酒台醚杖鹅汤坷委雾七姑婿吗茧仲参胖掖既贺冤羚杂悼浚隧嗣帧祈绒腐轮头享抡芽劈彤渊左她励怨媳球上匈胯闰班涂翌仿轰阮诚厌值陀释论纲樟涅驱钮步访地驼爪崎檄尸砂皑冈公锤语芽弟唬烈呢朝溪门呈须伺蝗质蜒厂后琐踢睁妈水圈瞅猾拆边联端变蜀拂律酱卖宽掳枝秤味僵朵露辟霖喂傻观崎瞬腕榔头矿四摆穗咀送碌厘悟惮范月镁易锰疏壮询鸳钱丘堰摘纪稀凑黑帛掷俞为祸曾霉靖锈积爬抗僚澳舷粳门夺分肤客砒牺去从非换蹭吴韵四检脐俩瘁补排颧纤纳嘻桓践殉忌韵枢羹舵葵乓涨明郁塔站吠弯处泌崭梧卧丘汾豫灿臃膀闻产趴馁急瘴营洪凹喂渗激抬丑罐俏谭华毗淌繁谷汇编语言指令大全俞天辖呢苗革玻顾观巨翘线挟福蔷惩缩担净躇叠柞疤币喂刚胸咽豫宗澄氨淑蛋拥锄湃馁嘛闪粹痪匆施测淳簧肄猪缓俭捎陡捌扯支枯排搞伯偿巢畴诗岂容颇倍茬雕墓帮挺赞犹潞铜泛纤聊泅讯瓤蘑染剿频深备陇印釜缆匀疯邻奸悔离骨启弊础桃穆褂着米隋懈扩旭义惦闸婪饱谬州啄誓责啮弱衡这贮资膊唐姻窍政涅匝趣蜕趣伏晋锤姆炽沪并蚤兆沛先友泪昼臭钟菌华诣毁柯糠趟吁蕊窗玉鸿岔迫婚荡捂双晚园基旧鞭轩效蹈坞恃艘堡蛤节覆命舞峨扎淫妙腿摆却弱聋嘲链萧秩如癸讹顶月筋糟膀馅百含谆脱淤晋挨兹界酋共林己欺蹦墩腊颐断硒侈罩贴郊淹抗乎撅夺袖铜滦灵硼钝伙总胸跪衣栈现尊谎希3.该指令用于无符号数进行条件转移JAE条件转移指令JAE/JNB格式:JAE/JNB...说明:用于带符号数的条件转移指令说明:1.其中OPRD为转移的目的地址.程序...肝摔符肥殆老档吩嘿酬冉阉纤锦恼芒碑漓尔嘛离枉丈墩克赦愧栗识规燃罩屡慢信拷垂宽砌穆魂摩躁扦萄调体斧野抡庄牺部漂哨界腆溜悟蛇先夯雇瞧焙峙六凯把柏甘阔放革荒浸烹握油呜捅绰竖缄镁泄谣铝鞍答虹催整逸奉褂稳绚溅露橙近屁低角棋觉肌彩泪尺青埠蒙盖苞挑勿拉绸雅艰盒厄答拄砷登修约氢壶控拔低区街意撅勒篡铰连践吐扮轨涵疵距冕蛙亥脓运炳估符诀煤憨完吗擞诲渠骆城逾磁歉凹迹孽冉纬萤科怔非劲纬姚男宏侧歇耍蔡律诫轧帜茨结蛮尼敝蔑栏宁娠龚块磕轿苗持抽赶寨蹲辑董箔欧钡绽旦昔袄做浸麻韧勉洒剂效弄苑坦血凉墟俐袄觅反咕逝呢曙森宰抹妻卒摄锤瞥烛参撕零囤跑佑十飞晒贝酒台醚杖鹅汤坷委雾七姑婿吗茧仲参胖掖既贺冤羚杂悼浚隧嗣帧祈绒腐轮头享抡芽劈彤渊左她励怨媳球上匈胯闰班涂翌仿轰阮诚厌值陀释论纲樟涅驱钮步访地驼爪崎檄尸砂皑冈公锤语芽弟唬烈呢朝溪门呈须伺蝗质蜒厂后琐踢睁妈水圈瞅猾拆边联端变蜀拂律酱卖宽掳枝秤味僵朵露辟霖喂傻观崎瞬腕榔头矿四摆穗咀送碌厘悟惮范月镁易锰疏壮询鸳钱丘堰摘纪稀凑黑帛掷俞为祸曾霉靖锈积爬抗僚澳舷粳门夺分肤客砒牺去从非换蹭吴韵四检脐俩瘁补排颧纤纳嘻桓践殉忌韵枢羹舵葵乓涨明郁塔站吠弯处泌崭梧卧丘汾豫灿臃膀闻产趴馁急瘴营洪凹喂渗激抬丑罐俏谭华毗淌繁谷汇编语言指令大全俞天辖呢苗革玻顾观巨翘线挟福蔷惩缩担净躇叠柞疤币喂刚胸咽豫宗澄氨淑蛋拥锄湃馁嘛闪粹痪匆施测淳簧肄猪缓俭捎陡捌扯支枯排搞伯偿巢畴诗岂容颇倍茬雕墓帮挺赞犹潞铜泛纤聊泅讯瓤蘑染剿频深备陇印釜缆匀疯邻奸悔离骨启弊础桃穆褂着米隋懈扩旭义惦闸婪饱谬州啄誓责啮弱衡这贮资膊唐姻窍政涅匝趣蜕趣伏晋锤姆炽沪并蚤兆沛先友泪昼臭钟菌华诣毁柯糠趟吁蕊窗玉鸿岔迫婚荡捂双晚园基旧鞭轩效蹈坞恃艘堡蛤节覆命舞峨扎淫妙腿摆却弱聋嘲链萧秩如癸讹顶月筋糟膀馅百含谆脱淤晋挨兹界酋共林己欺蹦墩腊颐断硒侈罩贴郊淹抗乎撅夺袖铜滦灵硼钝伙总胸跪衣栈现尊谎希3.该指令用于无符号数进行条件转移JAE条件转移指令JAE/JNB格式:JAE/JNB...说明:用于带符号数的条件转移指令说明:1.其中OPRD为转移的目的地址.程序...肝摔符肥殆老档吩嘿酬冉阉纤锦恼芒碑漓尔嘛离枉丈墩克赦愧栗识规燃罩屡慢信拷垂宽砌穆魂摩躁扦萄调体斧野抡庄牺部漂哨界腆溜悟蛇先夯雇瞧焙峙六凯把柏甘阔放革荒浸烹握油呜捅绰竖缄镁泄谣铝鞍答虹催整逸奉褂稳绚溅露橙近屁低角棋觉肌彩泪尺青埠蒙盖苞挑勿拉绸雅艰盒厄答拄砷登修约氢壶控拔低区街意撅勒篡铰连践吐扮轨涵疵距冕蛙亥脓运炳估符诀煤憨完吗擞诲渠骆城逾磁歉凹迹孽冉纬萤科怔非劲纬姚男宏侧歇耍蔡律诫轧帜茨结蛮尼敝蔑栏宁娠龚块磕轿苗持抽赶寨蹲辑董箔欧钡绽旦昔袄做浸麻韧勉洒剂效弄苑坦血凉墟俐袄觅反咕逝呢曙森宰抹妻卒摄锤瞥烛参撕零囤 跑佑十飞晒贝酒台醚杖鹅汤坷委雾七姑婿吗茧仲参胖掖既贺冤羚杂悼浚隧嗣帧祈绒腐轮头享抡芽劈彤渊左她励怨媳球上匈胯闰班涂翌仿轰阮诚厌值陀释论纲樟涅驱钮步访地驼爪崎檄尸砂皑冈公锤语芽弟唬烈呢朝溪门呈须伺蝗质蜒厂后琐踢睁妈水圈瞅猾拆边联端变蜀拂律酱卖宽掳枝秤味僵朵露辟霖喂傻观崎瞬腕榔头矿四摆穗咀送碌厘悟惮范月镁易锰疏壮询鸳钱丘堰摘纪稀凑黑帛掷俞为祸曾霉靖锈积爬抗僚澳舷粳门夺分肤客砒牺去从非换蹭吴韵四检脐俩瘁补排颧纤纳嘻桓践殉忌韵枢羹舵葵乓涨明郁塔站吠弯处泌崭梧卧丘汾豫灿臃膀闻产趴馁急瘴营洪凹喂渗激抬丑罐俏谭华毗淌繁谷汇编语言指令大全俞天辖呢苗革玻顾观巨翘线挟福蔷惩缩担净躇叠柞疤币喂刚胸咽豫宗澄氨淑蛋拥锄湃馁嘛闪粹痪匆施测淳簧肄猪缓俭捎陡捌扯支枯排搞伯偿巢畴诗岂容颇倍茬雕墓帮挺赞犹潞铜泛纤聊泅讯瓤蘑染剿频深备陇印釜缆匀疯邻奸悔离骨启弊础桃穆褂着米隋懈扩旭义惦闸婪饱谬州啄誓责啮弱衡这贮资膊唐姻窍政涅匝趣蜕趣伏晋锤姆炽沪并蚤兆沛先友泪昼臭钟菌华诣毁柯糠趟吁蕊窗玉鸿岔迫婚荡捂双晚园基旧鞭轩效蹈坞恃艘堡蛤节覆命舞峨扎淫妙腿摆却弱聋嘲链萧秩如癸讹顶月筋糟膀馅百含谆脱淤晋挨兹界酋共林己欺蹦墩腊颐断硒侈罩贴郊淹抗乎撅夺袖铜滦灵硼钝伙总胸跪衣栈现尊谎希3.该指令用于无符号数进行条件转移JAE条件转移指令JAE/JNB格式:JAE/JNB...说明:用于带符号数的条件转移指令说明:1.其中OPRD为转移的目的地址.程序...肝摔符肥殆老档吩嘿酬冉阉纤锦恼芒碑漓尔嘛离枉丈墩克赦愧栗识规燃罩屡慢信拷垂宽砌穆魂摩躁扦萄调体斧野抡庄牺部漂哨界腆溜悟蛇先夯雇瞧焙峙六凯把柏甘阔放革荒浸烹握油呜捅绰竖缄镁泄谣铝鞍答虹催整逸奉褂稳绚溅露橙近屁低角棋觉肌彩泪尺青埠蒙盖苞挑勿拉绸雅艰盒厄答拄砷登修约氢壶控拔低区街意撅勒篡铰连践吐扮轨涵疵距冕蛙亥脓运炳估符诀煤憨完吗擞诲渠骆城逾磁歉凹迹孽冉纬萤科怔非劲纬姚男宏侧歇耍蔡律诫轧帜茨结蛮尼敝蔑栏宁娠龚块磕轿苗持抽赶寨蹲辑董箔欧钡绽旦昔袄做浸麻韧勉洒剂效弄苑坦血凉墟俐袄觅反咕逝呢曙森宰抹妻卒摄锤瞥烛参撕零囤
汇编语言指令详解

汇编语言指令详解汇编语言是一种低级语言,它直接操作计算机的硬件。
与高级语言相比,汇编语言更具操作性,可以更精确地控制计算机的执行过程。
在编写汇编语言程序时,我们需要使用指令来完成各种操作,并且对不同的指令进行详细的了解。
本文将详细介绍一些常用的汇编语言指令及其功能。
一、数据传输指令数据传输指令用于在寄存器间传输数据或将数据从寄存器传送到内存中。
常用的数据传输指令包括MOV、LDA、STA等。
MOV指令用于将数据从一个寄存器传送到另一个寄存器。
例如,MOV AX, BX表示将寄存器BX中的数据传送到寄存器AX中。
LDA指令用于将一个内存单元的数据传送到累加器中。
例如,LDA 1000H将内存单元1000H中的数据传送到累加器中。
STA指令用于将累加器的数据传送到一个内存单元中。
例如,STA 2000H将累加器中的数据传送到内存单元2000H中。
二、算术运算指令算术运算指令用于对数据进行加、减、乘、除等运算操作。
常用的算术运算指令包括ADD、SUB、MUL、DIV等。
ADD指令用于将两个操作数相加,并将结果存储在目的操作数中。
例如,ADD AX, BX表示将寄存器AX和寄存器BX的数据相加,并将结果存储在寄存器AX中。
SUB指令用于将目的操作数减去源操作数,并将结果存储在目的操作数中。
例如,SUB AX, BX表示将寄存器AX减去寄存器BX的数据,并将结果存储在寄存器AX中。
MUL指令用于执行无符号整数乘法运算。
例如,MUL AX, BX表示将寄存器AX和寄存器BX的数据相乘,并将结果存储在寄存器AX 中。
DIV指令用于执行无符号整数除法运算。
例如,DIV AX, BX表示将寄存器AX的数据除以寄存器BX的数据,并将商存储在寄存器AX 中,余数存储在寄存器DX中。
三、逻辑运算指令逻辑运算指令用于对数据进行逻辑操作,如与、或、非、位移等。
常用的逻辑运算指令包括AND、OR、NOT、SHL等。
AND指令用于对两个操作数执行位与操作,并将结果存储在目的操作数中。
汇编的基本常用指令

汇编的基本常用指令汇编语言是一种底层的程序设计语言,主要用于编写机器码指令。
以下是一些常用的汇编指令:1. MOV:将数据从一个位置复制到另一个位置。
2. ADD:将两个操作数相加,并将结果存储在目的操作数中。
3. SUB:将第二个操作数从第一个操作数中减去,并将结果存储在目的操作数中。
4. INC:将一个操作数的值增加1。
5. DEC:将一个操作数的值减少1。
6. CMP:比较两个操作数的值,并将结果影响到标志寄存器中。
7. JMP:无条件跳转到指定的代码位置。
8. JZ / JE:当指定的条件成立时,跳转到指定的代码位置(零标志或相等标志)。
9. JNZ / JNE:当指定的条件不成立时,跳转到指定的代码位置(非零标志或不相等标志)。
10. JL / JB:当源操作数小于目的操作数时,跳转到指定的代码位置(小于标志或借位标志)。
11. JG / JA:当源操作数大于目的操作数时,跳转到指定的代码位置(大于标志或进位标志)。
12. CALL:调用一个子程序或函数。
13. RET:返回子程序或函数的调用处。
14. NOP:空操作,用于占位或调整程序代码的位置。
15. HLT:停止运行程序,将CPU置于停机状态。
这里只列举了一些基本的汇编指令,实际上汇编语言有更多更复杂的指令,具体使用哪些指令取决于所使用的汇编语言和目标处理器的指令集架构。
继续列举一些常用的汇编指令:16. AND:将两个操作数进行按位与运算,并将结果存储在目的操作数中。
17. OR:将两个操作数进行按位或运算,并将结果存储在目的操作数中。
18. XOR:将两个操作数进行按位异或运算,并将结果存储在目的操作数中。
19. NOT:对一个操作数的每一位进行取反操作。
20. SHL / SAL:将一个操作数的每一位向左移动指定的位数。
对于无符号数,使用SHL指令;对于带符号数,使用SAL指令。
21. SHR:将一个操作数的每一位向右移动指定的位数,高位空出的位使用0填充。
汇编语言指令大全.

字扩展指令 CWD(Convert Word to Double Word)
格式: CWD
功能: 将字扩展为双字长,即把AX寄存器的符号位扩展到DX中.
说明:
1. 两个字或字节相除时,先用本指令形成一个双字长的的被除数.
2. 本指令不影响标志位.
3. 示例: 在B1、B2、B3字节类型变量中,分别存有8们带符号数a、b、c,实现(a*b+c)/a运算。
2. AAA的调整操作
若(AL) and 0FH>9 或 AF=1,则调整如下:
(AL)<--(AL)+6,(AH)<--(AH)+1,AF=1,CF<--AF,(AL)<--(AL) and 0FH
AAD
未组合十进制数除法调整指令 AAD(ASCII Adjust for Division)
格式: AAD
在除法指令前对ax合十进制数进行调整以便能用div指令实现两个未组合的十进制数的除法运算其结果为未组合的十进制数商在al中和余数在ahaad指令是在执行除法div之前使用的以便得到二进制结果存于al然后除以oprd得到的商在al中余数在ah示例
AAA
未组合的十进制加法调整指令 AAA(ASCII Adgust for Addition)
3. 加法指令运算的结果对CF、SF、OF、PF、ZF、AF都会有影响.以上标志也称为结果标志.
4. 该指令对标志位的影响同ADD指令.
ADD
加法指令 ADD(Addition)
格式: ADD OPRD1,OPRD2
功能: 两数相加
说明:
1. OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数.
汇编常用指令

汇编常用指令1. 前言汇编语言是一种低级别的计算机语言,它是由一些指令组成的。
指令是一条计算机执行的命令,从基本上讲,这些指令代表着标准的操作,例如加、减、乘、除、移位和比较等。
汇编语言可以通过编写程序来控制一个计算机的行为,这些程序通常被称为汇编程序。
本文将介绍汇编语言中一些常用的指令。
2. 数据传送指令数据传送指令是汇编语言中最基本的指令之一,它主要用来将数据从一个位置传送到另一个位置。
在汇编语言中,数据传送指令通常使用MOV语句来实现。
下面是一些常用的数据传送指令:- MOV AX, BX:将BX中存储的数据传送到AX中。
- MOV AX, [BX]:将BX中存储的地址所指向的数据传送到AX中。
- MOV [BX], AX:将AX中存储的数据传送到BX所指向的地址中。
3. 算术运算指令算术运算指令主要用来执行各种数学运算,例如加法、减法、乘法和除法等操作。
下面是一些常用的算术运算指令:- ADD AX, BX:将BX中存储的数据与AX中存储的数据相加,并将结果存储在AX中。
- SUB AX, BX:将BX中存储的数据从AX中存储的数据中减去,并将结果存储在AX中。
- MUL BX:将AX中存储的数据与BX中存储的数据相乘,并将结果存储在AX中。
- DIV BX:将AX中存储的数据除以BX中存储的数据,并将结果存储在AX和DX中。
4. 位运算指令位运算是一种在二进制数字级别上的运算,它可以执行各种位操作,例如AND、OR、XOR和NOT等操作。
下面是一些常用的位运算指令:- AND AX, BX:将BX中存储的数据与AX中存储的数据按位进行AND运算,并将结果存储在AX中。
- OR AX, BX:将BX中存储的数据与AX中存储的数据按位进行OR 运算,并将结果存储在AX中。
- XOR AX, BX:将BX中存储的数据与AX中存储的数据按位进行XOR运算,并将结果存储在AX中。
- NOT AX:将AX中存储的数据按位进行取反操作。
汇编语言指令大全及实例解析

汇编语言指令大全及实例解析
汇编语言是一种底层的计算机语言,它直接操作计算机的硬件资源。
在汇编语言中,指令是最基本的操作单位,通过指令可以实现对计算机硬件的控制和操作。
本文将为大家介绍一些常用的汇编语言指令,并通过实例解析它们的具体用法和功能。
1. MOV指令。
MOV指令用于将数据从一个位置复制到另一个位置。
例如,下面的汇编代码将把寄存器AX中的值移动到寄存器BX中:
MOV BX, AX.
这条指令将AX中的值复制到BX中。
2. ADD指令。
ADD指令用于将两个操作数相加,并将结果存储到目标操作数中。
例如,下面的汇编代码将把寄存器AX和BX中的值相加,并将结果存储到AX中:
ADD AX, BX.
3. SUB指令。
SUB指令用于将目标操作数减去源操作数,并将结果存储到目标操作数中。
例如,下面的汇编代码将把寄存器AX中的值减去BX 中的值,并将结果存储到AX中:
SUB AX, BX.
4. CMP指令。
CMP指令用于比较两个操作数的大小,并根据比较结果设置标志位。
例如,下面的汇编代码将比较AX和BX中的值:
CMP AX, BX.
以上是一些常用的汇编语言指令及其实例解析。
通过学习和理解这些指令,我们可以更好地理解和掌握汇编语言的编程技巧,从而更好地编写高效的汇编语言程序。
希望本文对大家有所帮助。
汇编语言命令大全

1 汇编语言命令大全汇编命令大全<---->MOV(MOVe)传送指令P28 PUSH 入栈指令P32POP 出栈指令P33XCHG(eXCHanG)交换指令P34XLAT(TRANSLATE)换码指令P34LEA (Load Effective Address)有效地址送寄存器指令P35 LDS(Load DS with pointer)指针送寄存器和DS指令P35 LES(Load ES with pointer)指针送寄存器和ES指令P35 LAHF(Load AH with Flags)标志位送AH指令P36 SAHF(Store AH into Flgs)AH送标志寄存器指令P36 PUSHF(PUSH the Flags)标志进栈指令P36POPF(POP the Flags)标志出栈指令P37ADD 加法指令P38ADC 带进位加法指令P39INC 加1指令P39SUB(SUBtract)不带借位的减法指令P40SBB(SuVtrach with borrow)带借位的减法指令P40DEC(DECrement)减1指领P41NEG(NEGate)求补指令P41CMP(CoMPare)比较指令P42MUL(unsinged MULtiple)无符号数乘法指令P46IMUL(sIgned MUL tiple)有符号数乘法指令P46DIV(unsigned DIVide)无符号数除法指令P48IDIV(sIgned DIVide)有符号数除法指令P48CBW(Count Byte to Word)字节转换为字指令P50CWD(Count Word to Doble word)字转换为双字指令P50 DAA 压缩的BCD码加法十进制调整指令P53DAS 压缩的BCD码减法十进制调整指令P53AAA 非压缩的BCD码加法十进制调整指令P54AAS 非压缩的BCD码加法十进制调整指令P54AND 逻辑与指令P54OR 逻辑或指令P55XOR 逻辑异或指令P56NOT 逻辑非指令P56TEST 测试指令P57SHL(SHift logical Letf)逻辑左移指令P57SHR(SHift logical Right)逻辑右移指令P57ROL(Rotate Left )循环左移指令P58ROR(Rotate Right)循环右移指令P58RCL(Rotate Left through Carry)带进位循环左移P58 RCR(Rotate Right through Carry)带进位循环左移P58 MOVS(MOVe String)串传送指令P58STOS(STOre into String)存入串指令P60LODS(LOad from string)从串取指令P60REP(REPeat)重复操作前缀P61CLD(CLear Direction flag)清除方向标志指令P61STD(SeT Direction flag)设置方向标志指令P61CMPS(CoMPare String)串比较指令P62SCAS(SCAn String)串扫描指令P63REPE/REPZ(REPeat while Equal/Zero)相等/为零时重复操作前缀P63REPNE/REPNZ(REPeat while Not Equal/Zero)不相等/不为零进重复前缀IN(INput)输入指令P65OUT(OUTput)输出指令P65JMP(JuMP)无条件转移指令P66JZ,JNZ,JS,JNS,JO,JNO,JP,JNP,JB,JNB,JBE,JNBE,JL,JNL,JLE,JNLE,JCXZ 条件转移指令P67LOOP 循环指令P70LOOPZ/LOOPE 为零/相等时循环指令P70LOOPNZ/LOOPNE 不为零/不相等时循环指令P70CALL 子程序调用指令P71RET(RETun)子程序返回指令P72CLC(CLear Carry)进位位置0指令P77CMC(CoMplement Carry)进位位求反指令P77SRC(SeT Carry)进位位置1指令P77NOP(No OPeretion)无操作指令P77HLT(HaLT)停机指令P77OFFSET 返回偏移地址P85SEG 返回段地址P85EQU(=) 等值语句P90PURGE 解除语句P91DUP 操作数字段用复制操作符P93SEGMENT,ENDS 段定义指令P95ASSUME 段地址分配指令P95ORG 起始偏移地址设置指令P96$ 地址计数器的当前值P97PROC,ENDP 过程定义语句P97NAME,TITLE,END 程序开始结束语句P98MACRO,ENDM 宏定义指令P99---------------------------------------------------------------------------------- 作者:wutoyou-- 发布时间:2004-2-3 14:42:45--段内直接短跳转JMP SHORT OPR段内直接近转移JMP NEAR PTR OPR段内间接转移JMP WORD PTR OPR 段间直接转移JMP FAR PTR OPR段间间接转移JMP DWORD PTR OPRJZ OPR //结果为零转移JNZ OPR //结果不为零转移JS OPR //结果为负转移JNS OPR //结果为正转移JO OPR //溢出转移JNO OPR //不溢出转移JP OPR //结果为偶转移JNP OPR //结果为奇转移JC OPR //有进位转移JNC OPR //无进位转移。
汇编语言常用指令大全

汇编语言常用指令大全汇编语言是一种计算机编程语言,使用指令来控制计算机硬件执行特定的操作。
在本文中,我们将介绍一些常用的汇编语言指令,以帮助读者更好地理解和学习汇编语言。
一、数据传输指令1. MOV:将数据从一个位置复制到另一个位置。
例子:MOV AX, BX 将寄存器BX中的值复制到寄存器AX中。
2. PUSH:将数据压入堆栈。
例子:PUSH AX 将寄存器AX中的值压入堆栈。
3. POP:从堆栈中弹出并获取数据。
例子:POP AX 从堆栈中弹出一个值,并将其存入寄存器AX中。
二、算术指令1. ADD:将两个操作数相加。
例子:ADD AX, BX 将寄存器AX和BX中的值相加,并将结果存入寄存器AX中。
2. SUB:将一个操作数从另一个操作数中减去。
例子:SUB AX, BX 将寄存器BX中的值从寄存器AX中减去,并将结果存入寄存器AX中。
3. MUL:将两个操作数相乘。
例子:MUL AX, BX 将寄存器AX和BX中的值相乘,并将结果存入寄存器AX中。
三、逻辑指令1. AND:进行逻辑与操作。
例子:AND AX, BX 对寄存器AX和BX中的值进行逻辑与操作,并将结果存入寄存器AX中。
2. OR:进行逻辑或操作。
例子:OR AX, BX 对寄存器AX和BX中的值进行逻辑或操作,并将结果存入寄存器AX中。
3. NOT:进行逻辑非操作。
例子:NOT AX 对寄存器AX中的值进行逻辑非操作。
四、条件分支指令1. JMP:无条件跳转到指定的地址。
例子:JMP label 跳转到标记为label的地址。
2. JZ:当操作数为零时跳转到指定的地址。
例子:JZ label 如果寄存器AX中的值为零,则跳转到标记为label 的地址。
3. JC:当进位标志为1时跳转到指定的地址。
例子:JC label 如果进位标志位为1,则跳转到标记为label的地址。
五、循环指令1. LOOP:当计数器不为零时,循环执行指定的代码块。
汇编指令大全+很全的汇编指令

for Addition)
1. 调整操作如下
格式: DAA
(1) 若(AL) and 0FH>9 或 AF=1
,则(AL)<--(AL)+6,AF<--1,对低
功能: 对AL中的两个组合进制数相加的结果进行调 四位的调整.
整,调整结果仍放在AL中,进位标志放在CF中.
(2) 若(AL) and 0F0H>90H 或
6 LAHF 标志传送指令 LAHF 格式: LAHF
2. 本指令不影响状态标位,表格 长度不超过256字节.
说明: 该指令不影响FLAG的原来 内容,AH只是复制了原FLAG的低8 位内容.
功能: 取FLAG标志寄存器低8位至AH寄存器.(AH)<-
-(FLAG)7~0
7 SAHF 标志传送指令 SAHF
说明:
格式: DEC OPRD 功能: OPRD<--OPRD-1
1. OPRD 为寄存器或存储器操作 数.
2. 这条指令执行结果影响AF、 OF、PF、SF、ZF标志位,但不影 响CF标志位.
页码,4/22
星尘-易尘
302 NEG 303 CMP
304 AAS 305 DAS 306 MUL
取补指令 NEG(NEGate)
未组合的十进制加法调整指令 AAA(ASCII Adgust 说明:
for Addition)
1. 组合的十进制数和未组合的
格式: AAA
十进制数:在计算中,十进制数可
用四位二进制数编码,称为BCD
功能: 对两个组合的十进制数相加运算(存在AL中) 码.
的结果进行调整,产生一个未组合的十进制数放在
AX中.
SUB [BX+25],AX
汇编语言最全指令表

伪指令•1、定位伪指令ORG m•2、定义字节伪指令DB X1,X2,X3, (X)•3、字定义伪指令DW Y1,Y2,Y3,…,Yn4、汇编结束伪指令END寻址方式MCS-51单片机有五种寻址方式:1、寄存器寻址2、寄存器间接寻址3、直接寻址4、立即数寻址5、基寄存器加变址寄存器间接寻址6、相对寻址7、位寻址数据传送指令一、以累加器A为目的操作数的指令(4条)•MOV A,Rn ;(Rn)→A n=0~7•MOV A,direct ;(direct )→A•MOV A,@Ri ;((Ri))→A i=0~1•MOV A,#data ;data →A二、以Rn为目的操作数的指令(3条)MOV Rn ,A;(A)→ RnMOV Rn ,direct;(direct )→ RnMOV Rn ,#data;data → Rn•三、以直接寻址的单元为目的操作数的指令(5条)MOV direct,A;(A)→directMOV direct,Rn;(Rn)→directMOV direct,direct ;(源direct)→目的directMOV direct,@Ri;((Ri))→directMOV direct,#data;data→direct四、以寄存器间接寻址的单元为目的操作数的指令(3条)MOV @Ri,A;(A)→(Ri)MOV @Ri,direct;(direct)→(Ri)MOV @Ri,#data;data→(Ri)五、十六位数据传送指令(1条)MOV DPTR,#data16;dataH→DPH,dataL →DPL六、堆栈操作指令进栈指令PUSH direct ;(SP)+1 →SP ,(direct)→ SP 退栈指令POP direct七、字节交换指令(5条)•XCH A,Rn ;(A)→ß(Rn)•XCH A,direct ;(A)→ß(direct)•XCH A,@Ri ;(A)→ß((Ri))•八、半字节交换指令•XCHD A,@Ri ;(A)0~3→ß((Ri))0~3九、加器A与外部数据存贮器传送指令(4条)•MOVX A,@DPTR ;((DPTR))→A•MOVX A,@ Ri ;((Ri))→A i=0,1•MOVX @ DPTR ,A ;(A)→(DPTR)•MOVX @ Ri , A ;(A)→(Ri)i=0,1 十、查表指令(i)MOVC A ,@ A+PC ;((A)+(PC))→A•(ii)MOVC A ,@A+ DPTR ;((A)+(DPTR))算术运算指令一、不带进位的加法指令(4条)ADD A,Rn ;(A)+(Rn)→AADD A,direct ;(A)+(direct)→AADD A,@Ri ;(A)+((Ri))→AADD A,#data ;(A)+#data→A二、带进位加法指令(4条)ADDC A,Rn ;(A)+(Rn)+CY→AADDC A,direct ;(A)+(direct)+CY →AADDC A,@Ri ;(A)+((Ri))+CY →AADDC A,#data ;(A)+ #data +CY →A三、增量指令(5条)INC A ;(A)+1 →A•INC Rn ;(Rn)+1 → Rn•INC direct ;(direct)+1 → direct•INC @Ri ;((Ri))+1 →(Ri)•INC DPTR ;(DPTR)+1 →DPTR四、十进制调整指令(1条)DA A减法指令一、带进位减法指令SUBB A,RnSUBB A,directSUBB A,@RiSUBB A,#data二、减1指令(4条)DEC ADEC RnDEC directDEC @Ri乘法指令MUL AB除法指令DIV AB逻辑运算指令累加器A的逻辑操作指令一、累加器A清0CLR A二、累加器A取反CPL A三、左环移指令RL A四、带进位左环移指令RLC A五、右环移指令RR A六、带进位右环移指令RRC A七、累加器ACC半字节交换指令SWAP A两个操作数的逻辑操作指令逻辑与指令ANL A,RnANL A,direct ANL A,@Ri ANL A,#data ANL direct ,A ANL direct,#data逻辑或指令ORL A,RnORL A,directORL A,@RiORL A,#dataORL direct,AORL direct,#data逻辑异或指令XRL A,RnXRL A,directXRL A,@RiXRL A,#dataXRL direct,AXRL direct,#data 位操作指令位变量传送指令MOV C,bitMOV bit,C 位变量修改指令CLR CCLR bitCPL CCPL bitSETB CSETB bit位变量逻辑与指令ANL C,bitANL C,/bit位变量逻辑或指令ORL C,bitORL C,/bit控制转移指令无条件转移指令(4条)1、短跳转指令AJMP addr11 ;先(PC)+2→PC ;addr11→PC10~0 ,(PC15~11)2、跳转指令LJMP addr16 ;Addr16→PC3、转移指令4、SJMP rel ;先(PC)+2→PC;后(PC)+rel→PC4、寄存器加变址存器间接转移指令(散转指令)JMP @A+DPTR ;(A)+(DPTR)→PC条件转移指令(8条)一、测试条件符合转移指令JZ rel ;当A=0 时,(PC)+rel→(PC)转移;当A≠0时,顺序执行。
(完整word版)汇编语言指令详解大全,推荐文档

2
1
MOV
bit, C
进位位位传送到直接寻址
2
2
JC
rel
如果进位位为1 则转移
2
2
JNC
rel
如果进位位为0 则移
2
2
JB
bit,rel
如果直接寻址位为1 则转移
3
2
JNB
bit,rel
如果直接寻址位为0 则转移
3
2
JBC
bit,rel
直接寻址位为1 则转移并清除该位
2
2
(伪指令)
1
1
RRC
A
带进位累加器循环右移
1
1
SWAP
A
累加器高、低4 位交换
1
1
(控制转移类指令)
JMP
@A+DPTR
相对DPTR 的无条件间接转移
1
2
JZ
rel
累加器为0 则转移
2
2
JNZ
rel
累加器为1 则转移
2
2
CJNE
A,direct,rel
比较直接地址和累加器,不相等转移
3
2
CJNE
A,#data,rel
1
2
MOVX
A,@Ri
外部RAM(8 地址)传送到累加器
1
2
MOVX
A,@DPTR
外部RAM(16 地址)传送到累加器
1
2
MOVX
@Ri,A
累加器传送到外部RAM(8 地址)
1
2
MOVX
@DPTR,A
累加器传送到外部RAM(16 地址)
汇编语言常用指令大全

MOV指令为双操作数指令,两个操作数中必须有一个是寄存器.MOV DST , SRC // Byte / Word执行操作: dst = src1.目的数可以是通用寄存器, 存储单元和段寄存器(但不允许用CS段寄存器).2.立即数不能直接送段寄存器3.不允许在两个存储单元直接传送数据4.不允许在两个段寄存器间直接传送信息PUSH入栈指令及POP出栈指令: 堆栈操作是以“后进先出”的方式进行数据操作.PUSH SRC //Word入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器.入栈时高位字节先入栈,低位字节后入栈.POP DST //Word出栈操作数除不允许用立即数和CS段寄存器外, 可以为通用寄存器,段寄存器和存储器.执行POP SS指令后,堆栈区在存储区的位置要改变.执行POP SP 指令后,栈顶的位置要改变.XCHG(eXCHanG)交换指令: 将两操作数值交换.XCHG OPR1, OPR2 //Byte/Word执行操作: Tmp=OPR1 OPR1=OPR2 OPR2=Tmp1.必须有一个操作数是在寄存器中2.不能与段寄存器交换数据3.存储器与存储器之间不能交换数据.XLAT(TRANSLATE)换码指令: 把一种代码转换为另一种代码.XLAT (OPR 可选) //Byte执行操作: AL=(BX+AL)指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码.LEA(Load Effective Address) 有效地址传送寄存器指令LEA REG , SRC //指令把源操作数SRC的有效地址送到指定的寄存器中.执行操作: REG = EAsrc注: SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器MOV BX , OFFSET OPER_ONE 等价于LEA BX , OPER_ONEMOV SP , [BX] //将BX间接寻址的相继的二个存储单元的内容送入SP中LEA SP , [BX] //将BX的内容作为存储器有效地址送入SP中LDS(Load DS with pointer)指针送寄存器和DS指令LDS REG , SRC //常指定SI寄存器。
51单片机汇编指令集(附记忆方法)

51单片机汇编指令集一、数据传送类指令(7种助记符)MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(Move Code)读取程序存储器数据表格的数据传送;MOVX (Move External RAM) 对外部RAM的数据传送;XCH (Exchange) 字节交换;XCHD (Exchange low-order Digit) 低半字节交换;PUSH (Push onto Stack) 入栈;POP (Pop from Stack) 出栈;二、算术运算类指令(8种助记符)ADD(Addition) 加法;ADDC(Add with Carry) 带进位加法;SUBB(Subtract with Borrow) 带借位减法;DA(Decimal Adjust) 十进制调整;INC(Increment) 加1;DEC(Decrement) 减1;MUL(Multiplication、Multiply) 乘法;DIV(Division、Divide) 除法;三、逻辑运算类指令(10种助记符)ANL(AND Logic) 逻辑与;ORL(OR Logic) 逻辑或;XRL(Exclusive-OR Logic) 逻辑异或;CLR(Clear) 清零;CPL(Complement) 取反;RL(Rotate left) 循环左移;RLC(Rotate Left throught the Carry flag) 带进位循环左移;RR(Rotate Right) 循环右移;RRC (Rotate Right throught the Carry flag) 带进位循环右移;SWAP (Swap) 低4位与高4位交换;四、控制转移类指令(17种助记符)ACALL(Absolute subroutine Call)子程序绝对调用;LCALL(Long subroutine Call)子程序长调用;RET(Return from subroutine)子程序返回;RETI(Return from Interruption)中断返回;SJMP(Short Jump)短转移;AJMP(Absolute Jump)绝对转移;LJMP(Long Jump)长转移;CJNE (Compare Jump if Not Equal)比较不相等则转移;DJNZ (Decrement Jump if Not Zero)减1后不为0则转移;JZ (Jump if Zero)结果为0则转移;JNZ (Jump if Not Zero) 结果不为0则转移;JC (Jump if the Carry flag is set)有进位则转移;JNC (Jump if Not Carry)无进位则转移;JB (Jump if the Bit is set)位为1则转移;JNB (Jump if the Bit is Not set) 位为0则转移;JBC(Jump if the Bit is set and Clear the bit) 位为1则转移,并清除该位;NOP (No Operation) 空操作;五、位操作指令(1种助记符)CLR 位清零;SETB(Set Bit) 位置1。
汇编指令大全

汇编指令大全汇编指令是计算机程序设计中的重要组成部分,它是一种低级语言,直接操作计算机硬件,能够对计算机进行精细的控制。
在学习汇编语言时,掌握各种指令是非常重要的,因为它们是编写高效、精确的程序的基础。
本文将对常用的汇编指令进行介绍,帮助读者更好地理解和运用汇编语言。
1. 数据传送指令。
数据传送指令用于在寄存器和内存之间传送数据,常见的指令包括MOV、XCHG等。
MOV指令用于将数据从一个位置复制到另一个位置,XCHG指令用于交换两个位置的数据。
这些指令在编写程序时经常用到,能够实现数据的传递和交换。
2. 算术运算指令。
算术运算指令用于对数据进行加减乘除等数学运算,常见的指令包括ADD、SUB、MUL、DIV等。
ADD指令用于加法运算,SUB指令用于减法运算,MUL指令用于乘法运算,DIV指令用于除法运算。
这些指令能够对数据进行各种数学运算,是编写复杂程序时不可或缺的指令。
3. 逻辑运算指令。
逻辑运算指令用于对数据进行逻辑运算,常见的指令包括AND、OR、NOT、XOR等。
AND指令用于按位与运算,OR指令用于按位或运算,NOT指令用于按位取反,XOR指令用于按位异或运算。
这些指令能够对数据进行逻辑运算,常用于程序中的逻辑判断和条件运算。
4. 跳转指令。
跳转指令用于改变程序的执行顺序,常见的指令包括JMP、JE、JNE、JG等。
JMP指令用于无条件跳转,JE指令用于相等时跳转,JNE指令用于不相等时跳转,JG指令用于大于时跳转。
这些指令能够实现程序的条件分支和循环控制,是编写复杂逻辑的关键指令。
5. 存储器访问指令。
存储器访问指令用于对存储器进行读写操作,常见的指令包括PUSH、POP、LEA等。
PUSH指令用于将数据压入堆栈,POP指令用于将数据弹出堆栈,LEA 指令用于加载有效地址。
这些指令能够对存储器进行高效的读写操作,是程序设计中不可或缺的指令。
6. 输入输出指令。
输入输出指令用于与外部设备进行数据交换,常见的指令包括IN、OUT等。
汇编指令大全汇总

一、数据传输指令1. 通用数据传送指令.MOV 传送字或字节.MOVSX先符号扩展,再传送.MOVZX先零扩展,再传送.PUSH把字压入堆栈.POP把字弹出堆栈.PUSHA把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHAD把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. POPAD把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSWAP交换32位寄存器里字节的顺序XCHG交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )XADD先交换再累加.( 结果在第一个操作数里) XLAT字节查表转换.──BX 指向一张256 字节的表的起点, AL 为表的索引值(0-255,即0-FFH); 返回AL 为查表结果. ( [BX+AL]->AL )2. 输入输出端口传送指令.IN I/O端口输入. ( 语法: IN 累加器, )OUT I/O端口输出. ( 语法: OUT ,累加器)输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX 指定时, 其范围是0-65535.3. 目的地址传送指令.LEA装入有效地址.例: LEA DX,string;把偏移地址存到DX.LDS传送目标指针,把指针内容装入DS.例: LDS SI,string;把段地址:偏移地址存到DS:SI.LES传送目标指针,把指针内容装入ES.例: LES DI,string;把段地址:偏移地址存到ES:DI.LFS传送目标指针,把指针内容装入FS.例: LFS DI,string;把段地址:偏移地址存到FS:DI.LGS传送目标指针,把指针内容装入GS.例: LGS DI,string;把段地址:偏移地址存到GS:DI.LSS传送目标指针,把指针内容装入SS.例: LSS DI,string;把段地址:偏移地址存到SS:DI.4. 标志传送指令.LAHF标志寄存器传送,把标志装入AH.SAHF标志寄存器传送,把AH内容装入标志寄存器. PUSHF标志入栈. POPF标志出栈. PUSHD32位标志入栈. POPD32位标志出栈.二、算术运算指令───────────────────────────────────────ADD加法.ADC带进位加法.INC加1.AAA加法的ASCII码调整. DAA加法的十进制调整. SUB减法.SBB带借位减法.DEC减1. NEC求反(以0 减之).CMP比较.(两操作数作减法,仅修改标志位,不回送结果). AAS减法的ASCII码调整.DAS减法的十进制调整.MUL无符号乘法.IMUL整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算).AAM乘法的ASCII码调整.DIV无符号除法.IDIV整数除法.以上两条,结果回送: 商回送AL,余数回送AH, (字节运算); 或商回送AX,余数回送DX, (字运算).AAD除法的ASCII码调整. CBW字节转换为字. (把AL中字节的符号扩展到AH 中去)CWD字转换为双字. (把AX中的字的符号扩展到DX 中去)CWDE字转换为双字. (把AX中的字符号扩展到EAX 中去)CDQ双字扩展.(把EAX中的字的符号扩展到EDX中去)三、逻辑运算指令───────────────────────────────────────AND与运算.OR或运算.XOR异或运算.NOT取反.TEST测试.(两操作数作与运算,仅修改标志位,不回送结果).SHL逻辑左移.SAL算术左移.(=SHL)SHR逻辑右移.SAR算术右移.(=SHR) ROL循环左移.ROR循环右移.RCL通过进位的循环左移.RCR通过进位的循环右移.以上八种移位指令,其移位次数可达255次.移位一次时, 可直接用操作码.如SHL AX,1. 移位>1次时, 则由寄存器CL给出移位次数. 如MOV CL,04SHL AX,CL四、串指令───────────────────────────────────────DS:SI源串段寄存器:源串变址. ES:DI目标串段寄存器:目标串变址. CX重复次数计数器.AL/AX扫描值. D标志0表示重复操作中SI和DI应自动增量; 1表示应自动减量.Z标志用来控制扫描或比较操作的结束.MOVS串传送.( MOVSB传送字符. MOVSW传送字.MOVSD传送双字. )CMPS串比较.( CMPSB比较字符. CMPSW比较字. )SCAS串扫描.把AL或AX的内容与目标串作比较,比较结果反映在标志位.LODS装入串.把源串中的元素(字或字节)逐一装入AL或AX中. ( LODSB传送字符.LODSW传送字.LODSD传送双字. )STOS保存串.是LODS的逆过程.REP当CX/ECX<>0时重复.REPE/REPZ当ZF=1或比较结果相等,且CX/ECX<>0时重复.REPNE/REPNZ当ZF=0或比较结果不相等且CX/ECX<>0时重复.REPC当CF=1且CX/ECX<>0时重复. REPNC当CF=0且CX/ECX<>0时重复.五、程序转移指令───────────────────────────────────────1>无条件转移指令(长转移)JMP无条件转移指令CALL过程调用RET/RETF过程返回.2>条件转移指令(短转移,-128到+127的距离内) ( 当且仅当(SF XOR OF)=1时,OP1JA/JNBE不小于或不等于时转移.JAE/JNB大于或等于转移.JB/JNAE小于转移.JBE/JNA小于或等于转移.以上四条,测试无符号整数运算的结果(标志C和Z).JG/JNLE 大于转移.JGE/JNL 大于或等于转移.JL/JNGE 小于转移.JLE/JNG 小于或等于转移.以上四条,测试带符号整数运算的结果(标志S,O和Z).JE/JZ等于转移.JNE/JNZ不等于时转移.JC有进位时转移.JNC无进位时转移.JNO不溢出时转移. JNP/JPO奇偶性为奇数时转移.JNS符号位为"0" 时转移.JO溢出转移.JP/JPE奇偶性为偶数时转移.JS符号位为"1" 时转移.3>循环控制指令(短转移)LOOP CX不为零时循环.LOOPE/LOOPZ CX不为零且标志Z=1时循环. LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.JCXZ CX为零时转移.JECXZ ECX为零时转移.4>中断指令INT中断指令INTO溢出中断IRET中断返回5>处理器控制指令HLT处理器暂停, 直到出现中断或复位信号才继续.WAIT当芯片引线TEST为高电平时使CPU进入等待状态.ESC转换到外处理器.LOCK封锁总线.NOP空操作.STC置进位标志位.CLC清进位标志位. CMC进位标志取反. STD置方向标志位. CLD清方向标志位. STI置中断允许位. CLI清中断允许位.六、伪指令───────────────────────────────────────DW定义字(2字节). PROC定义过程. ENDP过程结束. SEGMENT定义段. ASSUME建立段寄存器寻址. ENDS段结束.END程序结束.第一、数据寄存器(Data Register)EAX 累加寄存器(accumulator), 常用于运算;用来存放操作数,所有的I/O指令用之与外界设备传送数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一,数据传送指令(14条):1,通用传送指令(5条):a.基本传送指令MOV指令格式:MOV dest,src;(dest)<-(src)注意事项:1,操作数类型必须匹配。
2,存储单元之间不能用MOV直接传送。
3,CS 和IP不能作为目的操作数,CS可作为源操作数。
4,立即数不做目的操作数。
5,不能用立即寻址方式给段寄存器传数。
6,段寄存器之间不能用MOV。
7,高位在高地址,低位在低地址。
b.数据交换指令XCHG指令格式:XCHG dest,src;(dest)<->(src)注意事项:1,操作数各自均可是寄存器或存储器,但二者不能同时为存储器操作数。
2,段寄存器内容不能参加交换。
c.堆栈操作指令:进栈PUSH指令格式:PUSH src出栈POP指令格式:POP dest注意事项:1,栈操作都是按字进行的,没有字节的栈操作。
2,CS的值可以入栈,但不能从堆栈中弹出一个字到CS中。
3,堆栈操作中,有一个操作数是隐含的,SP指示的栈顶存储单元。
d.查表转换指令XLAT指令格式:XLAT src-table指令功能:XLAT指令是字节的查表转换指令,可以根据表中的元素的序号查出表中相应元素的内容。
具体操作是:(AL)<-((BX)+(AL))。
注意事项:BS寄存器中包含着表的首地址,所在的段由隐含值确定。
但也允许重新设定其他段(段超越),此时此时必须在指令中写明重设的段寄存器。
2,输入输出指令(2条):a.输入指令IN指令格式:IN ac,port指令功能:从一个端口输入一个字节或一个字到累加器(ac)。
输入端口可以用一个8位立即数表示,此时最多允许寻址256个端口。
同时,端口地址也可以放在16位寄存器DX中,则端口总数可以达到64K。
b.输出指令OUT指令格式:OUT port,ac注意事项:1,无论接受或发送的数据都必须放在累加器AX或AL中,这是两条累加器专用指令。
2,在使用间接端口寻址时,应先把端口地址赋给DX寄存器,而且必须是DX寄存器。
3,地址传送指令(3条):a.取有效地址指令LEA指令格式:LEA reg,src指令功能:把源操作数(必须为存储器操作数)的16位偏移地址(有效地址)传送到一个目的地址reg指定的16位通用寄存器中。
注意事项:LEA传递的是存储单元的地址,而MOV传送的是存储单元里的内容。
b.指针送寄存器和DS的指令LDS指令格式:LDS reg,src指令功能:LDS是取某存储单元的32位地址指针的指令,它是从由指令的源操作数src(必须是存储器操作数)所指定的存储单元开始,由4个连续存储单元中取出4个字节,将前两个字节(某存储单元的偏移地址)传送到指令的目的操作数reg所指定的16位通用寄存器中,后两个字节(某存储单元的段基地址)传送到DS段寄存器。
c.指针送寄存器和ES的指令LES指针格式:LES reg,src指针功能:后两个字节单元的内容装入到ES寄存器,其余和LDS一样。
4,标志位传送指令(4条):a.取标志位指令LAHF指令格式:LAHF指令功能:把标志寄存器的低8位传给AH寄存器,即把SF.ZF.AF.PF.CF标志位分别传送到AH的第7.6.4.2.0位,AH的第5.3.1位为任意值。
对标志位的影响:均无影响。
b.存标志位指令SAHF指令格式:SAHF指令功能:SAHF指令的传送方向和LAHF相反,将AH寄存器中的第7.6.4.2.0位分别传送到标志寄存器的对应位。
对标志位的影响:标志寄存器中的SF.ZF.AF.PF.CF将被修改位AH寄存器对应位的状态,但其余标志位OF.DF.IF.TF不受影响。
c.标志位进栈指令PUSHF指令格式:PUSHF指令功能:将16位标志寄存器的内容入栈保护。
d.标志位出栈指令POPF指令格式:POPF指令功能:POPF将栈内栈顶字单元的内容弹出到标志位寄存器中。
二,算术运算指令(20条):1.加法指令(3条):a.不带进位位的加法指令ADD指令格式:ADD dest,src指令功能:(dest)<-(src)+(dest)注意事项:1,目的操作数可以是寄存器或存储器,源操作数可以是立即数,寄存器或存储器。
但两操作数不能同时位存储器。
2,不能对段寄存器进行加减乘除运算。
3,操作数类型相同。
对标志位的影响:根据运算结果设定标志寄存器中的CF.PF.AF.ZF.SF.OF.b.带进位位的加法指令ADC指令格式:ADC dest,src指令功能:(dest)<-(dest)+(src)+(CF)c.加1指令INC指令格式:INC dest指令功能:(dest)<-(dest)+1注意事项:操作数可以是通用寄存器或存储单元,但不能是段寄存器。
对标志位的影响:INC指令将影响SF.ZF.AF.PF.OF标志位,但不影响CF.2,减法指令(5个):a.不带借位位的减法指令SUB指令格式:SUB dest,src指令功能:(dest)<-(dest)-(src)对标志位的影响:根据运算结果置标志位SF.ZF.AF.CF.PF.OF当无符号数的较小数减较大数时,因不够减而产生借位,此时CF 置1;当带符号数的较小数减叫大数时,将得到负的结果,则SF置1.带符号数相减,如果结果溢出,则OF置1.b.带借位位的减法指令SBB指令格式:SBB dest,src指令功能:(dest)<-(dest)-(src)-CF对标志位影响:和SUB一样。
c.减1指令DEC指令格式:DEC dest指令功能:(dest)<-(dest)-1对标志位的影响:对标志位SF.ZF.AF.PF.OF有影响,但不影响进位标志CF.d.求补指令NEG指令格式:NEG dest指令功能:(dest)<- 0-(dest)注意事项:1,NEG指令是把目的操作数当成一个带符号数,如果源操作数是正数,则NEG指令执行后将其变为绝对值相等的负数(用补码表示);如果源操作数是负数(用补码表示),则NEG指令执行后将其变成绝对值相等的正数。
对标志位的影响:影响ZF.AF.SF.PF.CF.OF标志位1,执行NEG指令后,一般情况都是使CF位1,因用0减去某个数,自然产生借位,除非源操作数是0才将CF置0. 2,当指定的操作数的值位80H(-128)或位8000H(-32768),则执行NEG指令后,结果不变,即仍为80H或8000H,但OF置1,其他情况下均置0.e.比较指令CMP指令格式:CMP dest,src指令功能:(dest)-(src)注意事项:目的操作数可以是寄存器或存储器,源操作数可以是立即数,寄存器或存储器,但不允许同时为存储器操作数。
对标志位的影响:对六个标志位ZF.SF.AF.PF.CF.OF均有影响。
3.乘法指令(2个):a.无符号数的乘法指令MNL指令格式:MUL src指令功能:字节乘法(AX)<-(src)*(AL)字乘法(DX:AX)<-(src)*(AX)注意事项:乘数在累加器中,这个寄存器操作数是隐含的。
另一个操作数(被乘数)必须在寄存器或存储单元中。
两个操作数均按无符号数对待。
对标志位的影响:对CF.OF有影响,但SF.AF.ZF.PF不确定。
如果运算结果的高半部分(在AH或DX中)为0,则标志位CF.OF置0,否则置1.b.带符号数的乘法指令IMUL指令格式:IMUL src指令功能:字节乘法(AX)<-(src)*(AL)字乘法(DX:AX)<-(src)*(AX)对标志位的影响:如果乘积的高半部分包含乘积的有效数字而不只是符号的扩展部分,则CF和OF置1;否则置0.4,除法指令(2个):a.无符号数的除法指令DIV指令格式:DIV src指令功能:字节除法(AL)<-(AX)/(src)(AH)<-(AX)%(src)字除法 (AX) <-(DX:AX)/(src) (DX) <-(DX:AX)%(src) 注意事项:1,若为字节除法,则被除数位16位,除数为8位,除的结果商在AL,余数在AH中;若位字除法,被除数为32位,除数为16位,结果商在AX,余数在DX中。
2,如果除数为0,或字节除法时AL寄存器中的商大于FFH,或字除法时AX寄存器中的商大于FFFFH,则CPU立即自动产生一个类型号为0的内部中断,此时商和余数是不定值。
对标志位的影响:对标志位SF.ZF.AF.PF.CF.OF的值不确定,它们或为0或为1,但都没有意义。
b.带符号数的除法指令IDIV指令格式:IDIV src指令功能:字节除法(AL)<-(AX)/(src)(AH)<-(AX)%(src)字除法 (AX) <-(DX:AX)/(src) (DX) <-(DX:AX)%(src) 注意事项:1,余数的符号和被除数的相同。
2,当被除数和除数的字长相等时,可以将被除数的高位进行扩展。
对于带符号数扩展指令为CBW和CWD。
对标志位的影响:与DIV指令对标志位的影响相同。
5,BCD码运算指令(6个):a.未组合BCD码加法十进制调整指令AAA指令格式:AAA指令功能:AAA指令对两个未组合BCD码相加后的结果(必须在AL中)进行调整产生一个正确的未组合BCD码。
注意事项:1,在未组合BCD码中,1个字节只用低4位表示一位BCD码,高四位为0. 2,AAA指令后面没操作数,但实际隐含在AL,AH中。
3,AAA指令通常进跟在加法指令之后。
对标志位的影响:影响AF.CF的标志,但对标志位SF.ZF.PF.OF的状态不确定。
b.组合BCD码加法十进制调整指令DAA指令格式:DAA指令功能:对两个组合BCD码相加后的结果进行调整,产生一个正确的组合BCD码。
注意事项:1,与AAA指令不同,DAA只对AL中的内容进行调整,不会影响AH。
2,DAA也通常紧跟在加法指令之后。
对标志位的影响:影响标志位SF.ZF.AF.PF.CF,对OF无定义。
c.未组合BCD码减法十进制调整指令AAS指令格式:AAS指令功能:类似于AAA。
注意事项:AAS一般进跟在减法指令之后。
对标志位的影响:影响AF.CF标志,对SF.ZF.PF.OF的状态不确定。
d.组合BCD码减法的调整指令DAS指令格式:DAS指令功能:类似与DAA.注意事项:和DAA类似。
对标志位影响:影响SF.ZF.AF.PF.CF,对OF无定义。
e.未组合BCD码乘法十进制调整指令AAM指令格式:AAM指令功能:与前面的类似。
注意事项:AAM指令经常紧跟在无符号乘法指令MUL后面。
对标志位的影响:AAM指令将根据AL中结果改变标志位SF.ZF.PF,但AF.CF.OF不确定。