《汇编语言功能号大全》
汇编语言常见指令

汇编语言常见指令汇编语言常见指令“PTR”操作符:强制类型转换MOV BYTE PTR [BX], 20H;1B立即数20H送DS:[BX]MOV WORD PTR [BX], 20H;立即数20H送DS:[BX],;00H送DS:[BX+1]2.LEA(Load Effective Address)设:变量X的偏移地址为1020H , (BP)=0020H 执行指令后:LEA DX, XLEA BX, [BP]; 执行后, (DX) = 1020H; 执行后, (BX) = 0020H3.地址传送指令LDS,LESLDS REG16, MEM ; 从存储器取出4B,送入REG16和DSLES REG16, MEM ; 从存储器取出4B,送入REG16和ES4.符号扩展指令CBW,CWDCBW ;将AL寄存器内容符号位扩展到AH CWD ;将AX寄存器内容符号位扩展到DX设:(AX)= 8060H,(DX)=1234H执行下列指令后CBW;(AX)= 0060H设:(AX)= 8060H,(DX)=1234H执行下列指令后CWD;(DX)= 0FFFFH,(AX)= 8060H 5.交换指令XCHG例如,(AX)= 5678H执行下面指令后XCHG A H, AL;(AX)= 7856H6.换码指令XLATXLAT ;AL←DS: [BX+AL]表格的首地址事先存放在内存逻辑地址DS: BX 中,AL的内容是相对于表格的位移量,把对应内存的内容取出放在AL寄存器。
7.逻辑运算符SHR(右移)SHL(左移)AND(与)OR(或)XOR(异或)NOT(取反8.关系运算符关系运算符用于两个数的比较,结果为“真(-1)”或“假(0)”GT(>)GE(>=)LT(<)LE(<=)EQ(=)NE(≠)9.地址运算符SEG 名称取地址表达式所在段的段基址OFFSET 名称取地址表达式的偏移地址10.类型操作符TYPE:取每个变量的字节数LENGTH:取变量定义了多少个取变量占用的字节总数11.加法指令(1)ADD(Addition):加法指令格式:ADD dest,src功能:dest ←dest + srcdest(目的操作数):8/16位的寄存器/存储器操作数src(源操作数):与目的操作数同类型的寄存器/存储器/立即数例:A DD AX, SI ; AX←(AX)+(SI),16位运算ADD X, 3 ; X←(X)+3, 运算位数由X的类型确定ADD [BX], DX ; DS:[BX]←DS:[BX]+DX, 16位运算说明:状态标志CF, OF, ZF, SF, PF, AF按照运算结果被刷新;(2)ADC(Addition with Carry):带进位的加法指令格式:ADC dest,src功能:dest←dest+src+CFdest(目的操作数):8/16位的寄存器/存储器src(源操作数):与目的操作数同类型的寄存器/存储器/立即数说明:状态标志CF, OF, ZF, SF, PF, AF按照运算结果被刷新;主要用于对数据分段相加时高位的加法运算。
《汇编语言功能号》

失败:AX=错误码
4CH
程序终止
AL=返回码
4DH
取返回码
AL=返回码
4EH
查找第一个目录项
DS:DX=ASCII串地址,CX=属性
AX=错误码
4FH
查找下一个目录项
DS:DX=ASCII串地址
AX=错误码
54H
读取磁盘写标志
AL=当前标志值
56H
文件改名
DS:DX=旧ASCII串,
19H
取当前磁盘
AL=当前驱动器号
1AH
设置DTA地址
DS:DX=ቤተ መጻሕፍቲ ባይዱTA地址
1BH
取缺省驱动器FAT信息
AL=每簇的扇区数,
DS:BX=FAT标识字节
CX=物理扇区的大小,
DX=驱动器和簇数
21H
随机读
DS:DX=FCB首地址
AL=00H读成功
AL=01H文件结束
AL=02H缓冲区溢出
AL=03H缓冲区不满
DS:DX=FCB首地址
AL=00H文件找到,AL=FFH未找到
13H
删除文件
DS:DX=FCB首地址
AL=00H删除成功,AL=FFH未找到
14H
顺序读
DS:DX=FCB首地址
AL=00H读成功
AL=01H文件结束,记录无数据
AL=02H DTA空间不够
AL=03H文件结束,记录不完整
15H
顺序写
48H
分配内存空间
BX=申请内存容量
成功:AX=分配内存首址
失败:BX=最大可用空间
49H
释放内存空间
ES=内存起始段地址
汇编语言知识大全

汇编语言知识大全第一章基础知识:一.机器码:1.计算机只认识0,1两种状态。
而机器码只能由0,1组成。
故机器码相当难认,故产生了汇编语言。
2.其中汇编由三类指令形成:汇编指令(有机器码对应),伪指令,其他符号(编译的时候有用)。
每一总CPU都有自己的指令集;注意学习的侧重点。
二.存储器:1.存储单元中数据和指令没任何差别。
2.存储单元:Eg:128个储存单元(0~127)128byte。
线:1.地址总线:寻址用,参数(宽度)为N根,则可以寻到2^N个内存单元。
据总线:传送数据用,参数为N根,一次可以传送N/8个存储单元。
3.控制总线:cpu对元器件的控制能力。
越多控制力越强。
四.内存地址空间:1.由地址总线决定大小。
2.主板:cpu和核心器件(或接口卡)用地址总线,数据总线,控制总线连接起来。
3.接口卡:由于cpu不能直接控制外设,需通过接口卡间接控制。
4.各类存储器芯片:RAM,BIOS(主板,各芯片)的ROM,接卡槽的RAMCPU在操控他们的时候,把他们都当作内存来对待,把他们总的看作一个由若干个存储单元组成的逻辑存储器,即我们所说的内存地址空间。
自己的一点理解:CPU对内存的操作是一样的,但是在cpu,内存,芯片之间的硬件本身所牵扯的线是不同的。
所以一些地址的功能是对应一些芯片的。
第二章寄存器引入:CPU中含有运算器,寄存器,控制器(由内部总线连接)。
而寄存器是可以用来指令读写的部件。
8086有14个寄存器(都是16位,2个存储空间)。
一.通用寄存器(ax,bx,cx,dx),16位,可以分为高低位注意1.范围:16位的2^16-1,8位的2^8-12.进行数据传送或运算时要注意位数对应,否则会报错二.字:1. 1个字==2个字节。
2. 在寄存器中的存储:0x高位字节低位字节;单元认定的是低单元数制,16进制h,2进制b三.20根数据总线的16位cpu--8086给出物理地址的方法:根数据总线(稍外):寻址能力为1M位的cpu(内部):一次能处理的数据位2^16。
汇编语言指令大全

逻辑与运算指令 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为转移的目的地址.程序...肝摔符肥殆老档吩嘿酬冉阉纤锦恼芒碑漓尔嘛离枉丈墩克赦愧栗识规燃罩屡慢信拷垂宽砌穆魂摩躁扦萄调体斧野抡庄牺部漂哨界腆溜悟蛇先夯雇瞧焙峙六凯把柏甘阔放革荒浸烹握油呜捅绰竖缄镁泄谣铝鞍答虹催整逸奉褂稳绚溅露橙近屁低角棋觉肌彩泪尺青埠蒙盖苞挑勿拉绸雅艰盒厄答拄砷登修约氢壶控拔低区街意撅勒篡铰连践吐扮轨涵疵距冕蛙亥脓运炳估符诀煤憨完吗擞诲渠骆城逾磁歉凹迹孽冉纬萤科怔非劲纬姚男宏侧歇耍蔡律诫轧帜茨结蛮尼敝蔑栏宁娠龚块磕轿苗持抽赶寨蹲辑董箔欧钡绽旦昔袄做浸麻韧勉洒剂效弄苑坦血凉墟俐袄觅反咕逝呢曙森宰抹妻卒摄锤瞥烛参撕零囤
汇编语言指令集合

操作数符号含义(寻址方式)ac 8位操作:AL;16位操作:AXport 一个输入/输出(I/O)端口,用数字或表达式来表示,端口号≤255dst目的操作数src源操作数reg 任意一个8位通用寄存器AH, AL, BH, BL, CH, CL, DH, DL;任意一个16位通用寄存器AX, BX, CX, DX, SI, DI, BP, SPdata88位立即数指令格式* 数据传送(10)– MOV、XCHG、XLAT、PUSH、POP– LEA、IN、OUT、PUSHF、POPF* 算术运算(17)– ADD、SUB、ADC、SBB、CMP、INC、DEC– MUL、IMUL、DIV、IDIV– CBW、CWD– DAA、DAS、AAA、AAS* 逻辑运算与移位操作(13)– AND、OR、XOR、NOT、TEST– SHL、SHR、SAL、SAR– ROL、ROR、RCL、RCR* 控制转移(27)– JMP、Jcc– JCXZ 、LOOP、LOOPZ、LOOPNZ– CALL、RET、INT n、IRET* 串操作(5)– MOVS、CMPS、SCAS、LODS、STOS– REP、REPZ、REPNZ* 处理器控制(9)– CLC、STC、CMC、CLD、STD、CLI、STI– NOP、HLT数据传送指令通用传送指令–MOV、XCHG、XLAT、PUSH、POP 输入输出指令–IN、OUT地址传送指令–LEA、LDS、LES标志传送指令–LAHF SAHF PUSHF POPF通用传送指令mov mov dst, src pop pop dst push push srcxchg xchg dst, srcxlat xlat src_table ;xlat; xlat Table;xlat es:Table(重设段寄存器)输入输出指令in in ac,port out out port,ac 地址传送指令lea lea reg, src lds lds reg,src les les reg,src 标志位传送指令lahfsahfpushfpopf算术运算指令加法指令–ADD、ADC、INC减法指令–SUB、SBB、DEC、NEG、CMP乘除法指令–MUL、IMUL、DIV、IDIV符号扩展指令–CBW、CWD十进制调整指令–AAA、DAA、AAS、DAS、AAM、AAD加法指令add ADD dst,src adc ADC dst,src inc INC dst减法指令sub SUB dst,src sbb SBB dst,src dec DEC dstneg NEG dstcmp CMP dst,src 乘除法指令mul MUL srcimul IMUL srcdiv DIV srcidiv IDIV src符号扩展指令cbw cbwcwd cwd十进制调整指令未组合BCD码加减法调整未组合BCD码乘除法调整组合BCD码加减法调整未组合BCD码加减法调整AAA aaa AAS aas 未组合BCD码乘除法调整AAM aam AAD aad 组合BCD码加减法调整DAA daa DAS das逻辑运算与移位指令逻辑运算指令–AND、OR、NOT、XOR、TEST 移位指令–SHL、SHR、SAL、SAR循环移位指令–ROL、ROR、RCL、RCR逻辑运算指令and AND dst,src test TEST dst,src or OR dst,src xor XOR dst,src not NOT dst移位指令shl SHL dst,1或CL shr SHR dst,1或CL sal SAL dst,1或CL sar SAR dst,1或CL 循环移位指令不带进位的循环移位-小循rol ROL dst,1或CL ror ROR dst,1或CL 带进位的循环移位-大循环rcl RCL dst,1或CL rcr RCR dst,1或CL控制转移指令* 无条件转移指令– JMP* 条件转移指令– JZ/JNZ、JC/JNC、JS/JNS、JP/JNP、JO/JNO– JA/JNA、JB/JNB、JG/JNG、JL/JNL* 循环控制指令– LOOP、LOOPZ、LOOPNZ、JCXZ * 过程调用与返回指令– CALL、RET* 中断指令– INT n、INTO、IRET无条件转移指令jmp JMP label 条件转移指令Jcc label *JZ/JE Jump on Zero/Equal*JNZ/JNE Jump on Not Zero/Equal *JS Jump on Sign*JNS Jump on Not Sign*JP/JPE Jump on Parity/Parity Even*JNP/JPO Jump on NotParity/Parity Odd*JO Jump on Overflow*JNO Jump on Not Overflow *JC/JB/JNAE Jump onCarry/Below/Not Above or Equal *JNC/JNB/JAE Jump on NotCarry/Not Below/Above or Equal *JBE/JNA Jump on Below or Equal/Not Above*JNBE/JA Jump on Not Below or Equal/Above*JL/JNGE Jump on Less/Not Greater or Equal*JNL/JGE Jump on NotLess/Greater or Equal*JLE/JNG Jump on Less orEqual/Not Greater*JNLE/JG Jump on Not Less or Equal/Greater循环控制指令loop LOOP labeljcxz JCXZ labelLOOPZ/LOOPE labelLOOPNZ/LOOPNE label 过程调用与返回指令call CALL labelret RET [ n ]中断指令INT nIRETINTO串操作指令*MOVS *STOS *LODS *CMPS *SCAS *REP *REPZ *REPNZmovs MOVS 目的串,源串MOVSBMOVSWcmps CMPS 源串,目的串scas SCAS 目的串lods LODS 源串stos STOS 目的串rep REPREPZ/REPEREPNZ/REPNE处理器控制指令–控制状态标志位–空操作–暂停控制状态标志位*CLC ; 置CF=0 *STC ; 置CF=1 *CMC ; CF取反*CLD ; 置DF=0 *STD ; 置DF=1 *CLI ; 置IF=0 *STI ; 置IF=1空操作NOP 暂停HLT功能除sahf和popf对标志位有影响外,其余均无影响(dst)<--(src)将sp指示的栈顶两字节数据传送到目的操作数dst中将16位的源操作数压入堆栈(dst)<-->(src)可以写操作数也可不写,表示将bx和al的值相加作为地址找到值放入al(port)-->(ac)将指定源操作数src(必须为存储器寄存器)的16为偏移地址传送到目的操作数(reg)指定的16为通用寄存器中从src指定的存储单元开始,在4个连续存储单元中取出前2字节送到reg,取出后2字节送到DS中。
8051汇编语言概述一 ) 指令分类 42个助记符,33种功能,共...

3-2-6 位寻址
位寻址的的操作数是RAM单元和特殊功能寄存器中可 用于位操作的位的地址。 例如: setb 40h ;将28h的最低位(第0位)臵1 mov c, 3fh ;将27h的最高位(第7位)送到CY mov 3fh , c ;将CY 送到27h的最高位(第7位) anl c, 3fh ;CY & (27h的第7位) -> CY
3-3-4 累加器交换指令
1) 字节交换指令XCH(3 条)
助记符格式
XCH A, Rn
机器码
11001rrrB
相应操作
A Rn
指令说明 机器周期
n=0~7 1 1
XCH A, direct 11000101B A (direct) direct
XCH A, ቤተ መጻሕፍቲ ባይዱRi
1100011iB data
相应操作
Rn ← A
指令说明
n=0~7, rrr=000~111
机器周期
1 1 1
10101rrr Rn←(direct) n=0~7, direct rrr=000~111 Rn←#data n=0~7, rrr=000~111
MOV Rn, #data 01111rrr data
注意:以上传送指令的结果均不影响程序状态字寄存器 PSW 的 P 和 Z 标志。
3-3-1 片内数据存储器传送指令MOV
片内数据存储器传送指令MOV 共17 条,指令基本格式: MOV <目的操作数>, <源操作数> 1)以累加器 A 为目的地址的传送指令(4 条)
助记符格式 MOV A, Rn MOV A, direct MOV A, @Ri MOV A, #data 机器码 11101rrrB 相应操作 A←Rn 指令说明 n=0~7, rrr=000~111 i=0,1 机器周期 1 1 1
汇编指令大全(有注释)_IT计算机_专业资料

汇编指令大全(有注释)_IT计算机_专业资料汇编指令大全(有注释)为了方便开发者理解和使用汇编语言,本文汇编指令大全提供了对常用指令的详细注释。
汇编语言是一种低级编程语言,直接操作计算机的硬件和寄存器。
掌握汇编语言对于理解计算机底层原理和优化程序性能至关重要。
下面列举了一些常用的汇编指令,以供参考。
1. MOV指令:用于将一个数据从一个位置复制到另一个位置。
可以在寄存器和内存之间传输数据。
示例:MOV AX, 10h ; 将数据10h复制到寄存器AX中MOV [BX], AX ; 将寄存器AX中的数据复制到内存地址BX指向的位置2. ADD指令:用于将两个数据相加,并将结果存储在指定的位置。
示例:ADD AX, BX ; 将寄存器AX和BX中的数据相加,并将结果保存在AX中ADD [BX], CX ; 将内存地址BX指向的数据与寄存器CX中的数据相加,并将结果保存在内存地址BX指向的位置3. SUB指令:用于将两个数据相减,并将结果存储在指定的位置。
示例:SUB AX, BX ; 将寄存器AX的数据减去BX的数据,并将结果保存在AX中SUB [BX], CX ; 将内存地址BX指向的数据减去寄存器CX的数据,并将结果保存在内存地址BX指向的位置4. INC指令:用于将指定位置的数据加1。
示例:INC AX ; 将寄存器AX的数据加1INC [BX] ; 将内存地址BX指向的数据加15. DEC指令:用于将指定位置的数据减1。
示例:DEC AX ; 将寄存器AX的数据减1DEC [BX] ; 将内存地址BX指向的数据减16. JMP指令:用于无条件跳转到指定的代码位置。
示例:JMP label1 ; 无条件跳转到标签label1处JMP 100h ; 无条件跳转到内存地址100h处7. CMP指令:用于比较两个数据的大小,并根据比较结果设置条件码寄存器。
示例:CMP AX, BX ; 比较寄存器AX和BX的数据大小,并设置条件码寄存器CMP [BX], CX ; 比较内存地址BX指向的数据和寄存器CX的数据大小,并设置条件码寄存器8. JE指令:用于在两个数据相等时跳转到指定的代码位置。
汇编语言指令大全及实例解析

汇编语言指令大全及实例解析
汇编语言是一种底层的计算机语言,它直接操作计算机的硬件资源。
在汇编语言中,指令是最基本的操作单位,通过指令可以实现对计算机硬件的控制和操作。
本文将为大家介绍一些常用的汇编语言指令,并通过实例解析它们的具体用法和功能。
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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成功:AX=文件号 2; 出错:AX=错误码 成功:AX=文件号 1; 出错:AX=错误码 DS:SI=ASCII 串; 失败:AX=错误码48H 49H 4 NhomakorabeaH 4BH
分配内存空间 释放内存空间 调整分配的内存空 间 装入/执行程序
BX=申请内存容量 ES=内存起始段地址 ES=原内存起始地址 BX=再申请内存容量 DS:DX=ASCII 串, ES:BX=参数区首地址 AL=0/3 执行/装入不执行 AL=返回码
28H
随机块写
DS:DX=FCB 首地址 CX=记录数
29H
分析文件名
ES:DI=FCB 首地址 DS:SI=ASCII 串 AL=控制分析标志 CX:DH:DL=年:月:日
2AH 2BH 2CH 2DH 2EH 2FH 30H 31H 33H 35H
CH:CL=时:分,DH:DL=秒:百分 秒 设置时间 CH:CL=时: 分, DH:DL=秒: 百分秒 设置磁盘写标志 AL=00 关闭,AL=01 打开 取 DTA 地址 ES:BX=DTA 首地址 取 DOS 版本号 AL=主版本号,AH=辅版本号 程序终止并驻留 AL=返回码, DX=驻留大小 ctrl-break 检测 AL=00 取状态 AL=01 置状 DL=00H 关闭,DL=01H 打开 态 获取中断向量 AL=中断向量号 ES:BX=中断向量
【
汇编语言各功能号汇总
入口参数 CS=程序段前缀的段地址 DL=输出显示的字符
】
出口参数 AL=输入字符 AL=接受字符
功能号 功能 00H 程序终止 01H 键盘输入 02H 显示输出 03H 串行通信输入 04H 串行通信输出 05H 打印机输出 06H 控制台输入输出 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 10H 11H 12H 13H 14H 无回显键盘输入 无回显键盘输入 显示字符串 输入字符串 检验键盘状态
成功:AX=分配内存首址 失败:BX=最大可用空间 失败:AX=错误码 失败:AX=错误码 BX=最大可用空间 失败:AX=错误码
4CH 4DH 4EH 4FH 54H 56H 57H
程序终止 取返回码 查找第一个目录项 DS:DX=ASCII 串地址,CX =属性 查找下一个目录项 DS:DX=ASCII 串地址 读取磁盘写标志 文件改名 DS:DX=旧 ASCII 串, DS:DX=新 ASCII 串 设置/读取文件日 BX=文件号,AL=0 读取 期和时间 AL=1 设置(DX:CX)
21H
随机读
DS:DX=FCB 首地址
22H
随机写
DS:DX=FCB 首地址
23H 24H 25H 26H 27H
文件长度
DS:DX=FCB 首地址
设置随机记录号 DS:DX=FCB 首地址 设置中断向量 DS:DX=中断向量,AL=中 断向量号 建立 PSP DX=新的 PSP 随机块读 DS:DX=FCB 首地址 CX=记录数
DL=驱动器号
40H
写文件或设备
41H 42H
删除文件 移动关闭指针
DS:DX=数据缓冲区地址, BX=文件号, CX=写入字节数 DX:DX=ASCII 串
43H
44H
45H 46H 47H
BX=文件号, CX:DX=位移量 AL=移动方式 读取/设置文件属 DS:DX=ASCII 串, 性 AL=0/1 取/置属性, CX=文件属性 设备 I/O 控制 BX=文件号; AL=0 取状态,AL=1 置状 态, AL=2 读数据,AL=3 写数 据, AL=6 取输入状态,AL=7 取输出状态 复制文件号 BX=文件号 1 强制文件号 取当前路径名 BX=文件号 1,CX=文件号 2 DL=驱动器号,DS:SI= ASCII 串地址
取日期 设置日期 取时间
AL=00H 读成功 AL=01H 文件结束 AL=02H 缓冲区溢出 AL=03H 缓冲区不满 AL=00H 写成功 AL=01H 盘满 AL=02H 缓冲区溢出 AL=00H 标准文件 AL=01H 多义文件 AL=FFH 非法盘符 CX:DH:DL=年:月:日
36H
取可用磁盘空间
15H
16H 17H
清除文件缓冲区 AL=驱动器数 AL=00H 文件找到, AL=FFH 文件未找到 关闭文件 DS:DX=FCB 首地址 AL=00H 目录修改成功, AL=FFH 未找到 查找第一个目录项 DS:DX=FCB 首地址 AL=00H 找到,AL=FFH 未找到 查找下一个目录项 DS:DX=FCB 首地址 AL=00H 文件找到, AL=FFH 未找到 删除文件 DS:DX=FCB 首地址 AL=00H 删除成功, AL=FFH 未找到 顺序读 DS:DX=FCB 首地址 AL=00H 读成功 AL=01H 文件结束,记录无数据 AL=02H DTA 空间不够 AL=03H 文件结束,记录不完整 顺序写 DS:DX=FCB 首地址 AL=00H 写成功 AL=01H 盘满 AL=02H DTA 空间不够 创建文件 DS:DX=FCB 首地址 AL=00H 创建成功, AL=FFH 无磁盘空间 文件改名 DS:DX=FCB 首地址 AL=00H 改名成功, (DS:DX+1)=旧文件名 AL=FFH 不成功 (DS:DX+17)=新文件名
38H 39H 3AH 3BH 3CH 3DH 3EH 3FH
取国家信息 建立子目录 删除子目录 改变目录 建立文件 打开文件 关闭文件 读文件或设备
成功: AX=每簇扇区数,BX=有效簇数, CX=每扇区字节数,DX=总簇数 失败: AX=FFFFH DS:DX=信息区地址 BX=国家代码 DS:DX=ASCII 串 AX=错误码 DS:DX=ASCII 串 AX=错误码 DS:DX=ASCII 串 AX=错误码 DS:DX=ASCII 串,CX=文 成功:AX=文件号; 件属性 失败:AX=错误码 DS:DX=ASCII 串, 成功:AX=文件号; AL=0/1/2 读/写/读写 失败:AX=错误码 BX=文件号 AX=错误码 DS:DX=数据缓冲区地址 成功: BX=文件号 AX=实际读出字节数, CX=读取字节数 AX=0 已到文件尾 出错: AX=错误码 成功:AX=实际写入字节数 出错:AX=错误码 成功:AX=00; 失败:AX=错误码 成功:DX:AX=新指针位置 出错:AX=错误码 成功:CX=文件属性 失败:AX=错误码 DX=设备信息
19H 1AH 1BH
取当前磁盘 设置 DTA 地址 取缺省驱动器 FAT 信息
AL=当前驱动器号 DS:DX=DTA 地址 AL=每簇的扇区数, DS:BX=FAT 标识字节 CX=物理扇区的大小, DX=驱动器和簇数 AL=00H 读成功 AL=01H 文件结束 AL=02H 缓冲区溢出 AL=03H 缓冲区不满 AL=00H 写成功 AL=01H 盘满 AL=02H 缓冲区溢出 AL=0 成功,长度在 FCB。AL=1 未找到
DL=发送字符 DL=打印字符 DL=FFH(输入) DL=字符(输出)
AL=输入字符 AL=输入字符 AL=输入字符
DS:DX=字符串地址 DS:DX=缓冲区地址 AL=00H 有输入 AL=FFH 无输入
清输入缓冲区,执 AL=输入功能号(1、6、7、 行指定输入功能 8、AH) 磁盘复位 选择磁盘驱动器 DL=驱动器号 打开文件 DS:DX=FCB 首地址
AL=返回码 AX=错误码 AX=错误码 AL=当前标志值 AX=错误码 DX:CX=日期和时间 失败:AX=错误码