《汇编语言功能号大全》

合集下载

汇编语言常见指令

汇编语言常见指令

汇编语言常见指令汇编语言常见指令“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按照运算结果被刷新;主要用于对数据分段相加时高位的加法运算。

《汇编语言功能号》

《汇编语言功能号》
AL=0/3执行/装入不执行
失败: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。

汇编语言指令大全

汇编语言指令大全
加法指令 ADD(Addition) 格式: ADD OPRD1,OPRD2 功能: 两数相加
逻辑与运算指令 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种功能,共...

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计算机_专业资料

汇编指令大全(有注释)_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.
以上是一些常用的汇编语言指令及其实例解析。

通过学习和理解这些指令,我们可以更好地理解和掌握汇编语言的编程技巧,从而更好地编写高效的汇编语言程序。

希望本文对大家有所帮助。

汇编语言指令大全X86和X87汇编指令大全(带注释)

汇编语言指令大全X86和X87汇编指令大全(带注释)

汇编语⾔指令⼤全X86和X87汇编指令⼤全(带注释)⽬录⼀、数据传输指令1. 通⽤数据传送指令.2. 输⼊输出端⼝传送指令.3. ⽬的地址传送指令.4. 标志传送指令.⼆、算术运算指令三、逻辑运算指令四、串指令五、程序转移指令六、伪指令七、处理机控制指令&#xff1a;标志处理指令浮点运算指令集1、控制指令2、数据传送指令3、⽐较指令4、运算指令其它1.机械码,⼜称机器码.2.需要熟练掌握的全部汇编知识(只有这么多)3.常见修改(机器码)4.两种不同情况的不同修改⽅法⼀、数据传输指令它们在存贮器和寄存器、寄存器和输⼊输出端⼝之间传送数据.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&#43;AL]-&gt;AL)2. 输⼊输出端⼝传送指令.IN I/O端⼝输⼊. ( 语法: IN 累加器, {端⼝号│DX} )OUT I/O端⼝输出. ( 语法: OUT {端⼝号│DX},累加器 )输⼊输出端⼝由⽴即⽅式指定时, 其范围是 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 标志出栈.PUSHD 32位标志⼊栈.POPD 32位标志出栈.⼆、算术运算指令ADD 加法.ADC 带进位加法.INC 加 1.AAA 加法的ASCII码调整.DAA 加法的⼗进制调整.SUB 减法.SBB 带借位减法.DEC 减 1.NEG 求反(以 0 减之).CMP ⽐较.(两操作数作减法,仅修改标志位,不回送结果).AAS 减法的ASCII码调整.DAS 减法的⼗进制调整.MUL ⽆符号乘法.结果回送AH和AL(字节运算),或DX和AX(字运算),IMUL 整数乘法.结果回送AH和AL(字节运算),或DX和AX(字运算),AAM 乘法的ASCII码调整.DIV ⽆符号除法.结果回送:商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算).IDIV 整数除法.结果回送:商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算).AAD 除法的ASCII码调整.CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)三、逻辑运算指令AND 与运算.XOR 异或运算.NOT 取反.TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).SHL 逻辑左移.SAL 算术左移.(&#61;SHL)SHR 逻辑右移.SAR 算术右移.(&#61;SHR)ROL 循环左移.ROR 循环右移.RCL 通过进位的循环左移.RCR 通过进位的循环右移.以上⼋种移位指令,其移位次数可达255次.移位⼀次时, 可直接⽤操作码. 如 SHL AX,1.移位&gt;1次时, 则由寄存器CL给出移位次数.如 MOV CL,04 SHL 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&lt;&gt;0时重复.REPE/REPZ 当ZF&#61;1或⽐较结果相等,且CX/ECX&lt;&gt;0时重复.REPNE/REPNZ 当ZF&#61;0或⽐较结果不相等,且CX/ECX&lt;&gt;0时重复.REPC 当CF&#61;1且CX/ECX&lt;&gt;0时重复.REPNC 当CF&#61;0且CX/ECX&lt;&gt;0时重复.五、程序转移指令1. ⽆条件转移指令 (长转移)JMP ⽆条件转移指令CALL 过程调⽤RET/RETF 过程返回.2. 条件转移指令 (短转移,-128到&#43;127的距离内)( 当且仅当(SF XOR OF)&#61;1时,OP1&lt;OP2 )JA/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 符号位为 &#34;0&#34; 时转移.JO 溢出转移.JP/JPE 奇偶性为偶数时转移.JS 符号位为 &#34;1&#34; 时转移.3. 循环控制指令(短转移)LOOP CX不为零时循环.LOOPE/LOOPZ CX不为零且标志Z&#61;1时循环.LOOPNE/LOOPNZ CX不为零且标志Z&#61;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 程序结束.七、处理机控制指令&#xff1a;标志处理指令CMC 进位位求反指令STC 进位位置为1指令CLD ⽅向标志置1指令STD ⽅向标志位置1指令CLI 中断标志置0指令STI 中断标志置1指令NOP ⽆操作HLT 停机WAIT 等待ESC 换码LOCK 封锁浮点运算指令集1、控制指令(带9B的控制指令前缀F变为FN时浮点不检查,机器码去掉9B)FINIT 初始化浮点部件机器码 9B DB E3FCLEX 清除异常机器码 9B DB E2FDISI 浮点检查禁⽌中断机器码 9B DB E1FENI 浮点检查禁⽌中断⼆机器码 9B DB E0WAIT 同步CPU和FPU 机器码 9BFWAIT 同步CPU和FPU 机器码 D9 D0FNOP ⽆操作机器码 DA E9FXCH 交换ST(0)和ST(1) 机器码 D9 C9FXCH ST(i) 交换ST(0)和ST(i) 机器码 D9 C1iiiFSTSW ax 状态字到ax 机器码 9B DF E0FSTSW word ptr mem 状态字到mem 机器码 9B DD mm111mmmFLDCW word ptr mem mem到状态字机器码 D9 mm101mmmFSTCW word ptr mem 控制字到mem 机器码 9B D9 mm111mmmFLDENV word ptr mem mem到全环境机器码 D9 mm100mmmFSTENV word ptr mem 全环境到mem 机器码 9B D9 mm110mmmFRSTOR word ptr mem mem到FPU状态机器码 DD mm100mmmFSAVE word ptr mem FPU状态到mem 机器码 9B DD mm110mmmFFREE ST(i) 标志ST(i)未使⽤机器码 DD C0iiiFDECSTP 减少栈指针1-&gt;0 2-&gt;1 机器码 D9 F6FINCSTP 增加栈指针0-&gt;1 1-&gt;2 机器码 D9 F7FSETPM 浮点设置保护机器码 DB E42、数据传送指令FLDZ 将0.0装⼊ST(0) 机器码 D9 EEFLD1 将1.0装⼊ST(0) 机器码 D9 E8FLDPI 将π装⼊ST(0) 机器码 D9 EBFLDL2T 将ln10/ln2装⼊ST(0) 机器码 D9 E9FLDL2E 将1/ln2装⼊ST(0) 机器码 D9 EAFLDLG2 将ln2/ln10装⼊ST(0) 机器码 D9 ECFLDLN2 将ln2装⼊ST(0) 机器码 D9 EDFLD real4 ptr mem 装⼊mem的单精度浮点数机器码 D9 mm000mmmFLD real8 ptr mem 装⼊mem的双精度浮点数机器码 DD mm000mmmFLD real10 ptr mem 装⼊mem的⼗字节浮点数机器码 DB mm101mmmFILD word ptr mem 装⼊mem的⼆字节整数机器码 DF mm000mmmFILD dword ptr mem 装⼊mem的四字节整数机器码 DB mm000mmmFILD qword ptr mem 装⼊mem的⼋字节整数机器码 DF mm101mmmFBLD tbyte ptr mem 装⼊mem的⼗字节BCD数机器码 DF mm100mmmFST real4 ptr mem 保存单精度浮点数到mem 机器码 D9 mm010mmmFST real8 ptr mem 保存双精度浮点数到mem 机器码 DD mm010mmmFIST word ptr mem 保存⼆字节整数到mem 机器码 DF mm010mmmFIST dword ptr mem 保存四字节整数到mem 机器码 DB mm010mmmFSTP real4 ptr mem 保存单精度浮点数到mem并出栈机器码 D9 mm011mmmFSTP real8 ptr mem 保存双精度浮点数到mem并出栈机器码 DD mm011mmmFSTP real10 ptr mem 保存⼗字节浮点数到mem并出栈机器码 DB mm111mmmFISTP word ptr mem 保存⼆字节整数到mem并出栈机器码 DF mm011mmmFISTP dword ptr mem 保存四字节整数到mem并出栈机器码 DB mm011mmmFISTP qword ptr mem 保存⼋字节整数到mem并出栈机器码 DF mm111mmmFBSTP tbyte ptr mem 保存⼗字节BCD数到mem并出栈机器码 DF mm110mmmFCMOVB ST(0),ST(i) &lt;时传送机器码 DA C0iiiFCMOVBE ST(0),ST(i) &lt;&#61;时传送机器码 DA D0iiiFCMOVE ST(0),ST(i) &#61;时传送机器码 DA C1iiiFCMOVNB ST(0),ST(i) &gt;&#61;时传送机器码 DB C0iiiFCMOVNBE ST(0),ST(i) &gt;时传送机器码 DB D0iiiFCMOVNE ST(0),ST(i) !&#61;时传送机器码 DB C1iiiFCMOVNU ST(0),ST(i) 有序时传送机器码 DB D1iiiFCMOVU ST(0),ST(i) ⽆序时传送机器码 DA D1iii3、⽐较指令FCOM ST(0)-ST(1) 机器码 D8 D1FCOMI ST(0),ST(i) ST(0)-ST(1) 机器码 DB F0iiiFCOMIP ST(0),ST(i) ST(0)-ST(1)并出栈机器码 DF F0iiiFCOM real4 ptr mem ST(0)-实数mem 机器码 D8 mm010mmmFCOM real8 ptr mem ST(0)-实数mem 机器码 DC mm010mmmFICOM word ptr mem ST(0)-整数mem 机器码 DE mm010mmmFICOM dword ptr mem ST(0)-整数mem 机器码 DA mm010mmmFICOMP word ptr mem ST(0)-整数mem并出栈机器码 DE mm011mmmFICOMP dword ptr mem ST(0)-整数mem并出栈机器码 DA mm011mmmFTST ST(0)-0 机器码 D9 E4FUCOM ST(i) ST(0)-ST(i) 机器码 DD E0iiiFUCOMP ST(i) ST(0)-ST(i)并出栈机器码 DD E1iiiFUCOMPP ST(0)-ST(1)并⼆次出栈机器码 DA E9FXAM ST(0)规格类型机器码 D9 E54、运算指令FADD 把⽬的操作数 (直接接在指令后的变量或堆栈缓存器) 与来源操作数 (接在⽬的操作数后的变量或堆栈缓存器) 相加&#xff0c;并将结果存⼊⽬的操作数FADDP ST(i),ST 这个指令是使⽬的操作数加上 ST 缓存器&#xff0c;并弹出 ST 缓存器&#xff0c;⽽⽬的操作数必须是堆栈缓存器的其中之⼀&#xff0c;最后不管⽬的操作数为何&#xff0c;经弹出⼀次后&#xff0c;⽬的操作数会变成上⼀个堆栈缓存器了FIADD FIADD 是把 ST 加上来源操作数&#xff0c;然后再存⼊ ST 缓存器&#xff0c;来源操作数必须是字组整数或短整数形态的变数FSUB 减FSUBPFSUBR 减数与被减数互换FSUBRPFISUBFISUBRFMUL 乘FMULPFIMULFDIV 除FDIVPFDIVRFDIVRPFIDIVFIDIVRFCHS 改变 ST 的正负值FABS 把 ST 之值取出&#xff0c;取其绝对值后再存回去。

IBM-PC汇编语言常用指令、符号、原理、考点大全

IBM-PC汇编语言常用指令、符号、原理、考点大全

汇编语言复习资料整理第二章1、寄存器组(1)通用寄存器数据寄存器EAX(32位) AX(16位) AH(8位)(高位) AL(8位)(低位)累加器EBX(32位) BX(16位) BH(8位)(高位) BL(8位)(低位)基址变址ECX(32位) CX(16位) CH(8位)(高位) CL(8位)(低位)计数器EDX(32位) DX(16位) DH(8位)(高位) DL(8位)(低位)数据指针或变址寄存器ESP(32位) SP(16位)堆栈指针寄存器EBP(32位) BP(16位)基址指针寄存器EDI(32位) DI(16位)目的变址寄存器ESI(32位) SI(16位)源变址寄存器(2)专用寄存器EIP(32位) IP(16位)指令指针寄存器EFLAGS(32位) FLAGS(16位)标志寄存器ESP (32位) SP(16位)堆栈指针寄存器2、标志位的符号表示、3、段寄存器CS(16位)代码段 DS(16位)数据段SS(16位)堆栈段 ES(16位)附加段4、段寄存器和相应存放偏移地址的寄存器之间的默认组合第三章1、七种寻址方式(举例)立即寻 MOV AX,3069H寄存器寻 MOV AL,BH在内存中的五种寻址直接寻 MOV AX,[2000H]寄存器间接寻 MOV AX,[BX]寄存器相对寻 MOV AX,COUNT[SI] 或者 MOV AX,[SI+COUNT](不推荐) 基址变址寻址 MOV AX,[BP][DI]相对基址变址寻址 MOV AX,MASK[BX][SI]2、指令系统I.数据传送指令(1)通用数据传送指令MOV 传送MOVSX 带符号扩展传送用源操作数的符号位来填充目的操作数的高位数据位。

例:MOVSX EAX,CL把CL寄存器中的8位数,符号扩展为32位数,送到EAX寄存器中。

MOVZX 带零扩展传送恒用0来填充目的操作数的高位数据位例:MOVZX DX,AL把AL寄存器中的8位数,零扩展成16位数,送到DX寄存器中。

汇编语言指令集

汇编语言指令集

mov‎a,b ‎把b的值送‎给a‎ret ‎返回主程序‎n‎o p 无作‎用,英文“‎n o op‎e rati‎o n”的简‎写,意思是‎“do n‎o thin‎g”(机器‎码90)*‎**机器码‎的含义参看‎上面‎(解释:‎u ltra‎e dit打‎开编辑ex‎e文件时你‎看到90,‎等同于汇编‎语句nop‎)‎c all ‎调用子程序‎j‎e或jz‎若相等则‎跳(机器码‎74 或0‎F84) ‎jn‎e或jnz‎若不相等‎则跳(机器‎码75或0‎F85) ‎jm‎p无条件‎跳(机器码‎E B)‎jb ‎若小于则跳‎j‎a若大于‎则跳‎jg 若‎大于则跳‎jg‎e若大于‎等于则跳‎jl‎若小于则‎跳‎j le 若‎小于等于则‎跳‎p op 出‎栈‎p ush ‎压栈三‎.常见修改‎(机器码)‎7‎4=>75‎74=>‎90 74‎=>EB ‎75‎=>74 ‎75=>9‎0 75=‎>EB‎jnz‎->nop‎7‎5->90‎(相应的机‎器码修改)‎j‎n z ->‎jmp ‎75‎-> E‎B(相应的‎机器码修改‎)‎j nz -‎> jz ‎75‎->74 ‎(正常) ‎0F 85‎-> 0‎F 84(‎特殊情况下‎,有时,相‎应的机器码‎修改)‎四.两种不‎同情况的不‎同修改方法‎1‎.修改为j‎m p‎je(j‎n e,jz‎,jnz)‎=>jm‎p相应的机‎器码EB ‎(出错信息‎向上找到的‎第一个跳转‎)jmp 的‎作用是绝对‎跳,无条件‎跳,从而跳‎过下面的出‎错信息‎xxx‎x xxxx‎x xxx ‎出错信息,‎例如:注册‎码不对,s‎o rry,‎未注册版不‎能...,‎"Func‎t ion ‎N ot A‎v aibl‎e in ‎D emo"‎或‎"Com‎m and ‎N ot A‎v aibl‎e" 或‎"Can'‎t sav‎e in ‎S hare‎w are/‎D emo"‎等(我们‎希望把它跳‎过,不让它‎出现)<。

汇编指令大全+很全的汇编指令

汇编指令大全+很全的汇编指令

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

《汇编语言功能号大全》

《汇编语言功能号大全》

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 串地址
成功:AX=文件号 2; 出错:AX=错误码 成功:AX=文件号 1; 出错:AX=错误码 DS:SI=ASCII 串; 失败:AX=错误码
48H 49H 4AH 4BH
分配内存空间 释放内存空间 调整分配的内存空 间 装入/执行程序
BX=申请内存容量 ES=内存起始段地址 ES=原内存起始地址 BX=再申请内存容量 DS:DX=ASCII 串, ES:BX=参数区首地址 AL=0/3 执行/装入不执行 AL=返回码

汇编语言各功能号汇总
入口参数 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 无回显键盘输入 无回显键盘输入 显示字符串 输入字符串 检验键盘状态

汇编语言各种指令的解释与用法

汇编语言各种指令的解释与用法

汇编语⾔各种指令的解释与⽤法【数据传输指令】⼀、通⽤数据传送指令1、传送指令MOV (move)指令的汇编格式:MOV DST,SRC指令的基本功能:(DST)<-(SRC) 将原操作数(字节或字)传送到⽬的地址。

指令⽀持的寻址⽅式:⽬的操作数和源操作数不能同时⽤存储器寻址⽅式,这个限制适⽤于所有指令。

指令的执⾏对标志位的影响:不影响标志位。

指令的特殊要求:⽬的操作数DST和源操作数SRC不允许同时为段寄存器;⽬的操作数DST不能是CS,也不能⽤⽴即数⽅式。

2、进栈指令 PUSH (push onto the stack)出栈指令 POP (pop from the stack)指令的汇编格式:PUSH SRC ;POP DST指令的基本功能:PUSH指令在程序中常⽤来暂存某些数据,⽽POP指令⼜可将这些数据恢复。

PUSH SRC (SP)<-(SP)-2 ;(SP)<-(SRC)POP DST (DST)<-((SP));(SP)<-(SP)指令⽀持的寻址⽅式:push 和 pop指令不能不能使⽤⽴即数寻址⽅式。

指令对标志位的影响:PUSH 和 POP指令都不影响标志位。

指令的特殊要求:PUSH 和 POP指令只能是字操作,因此,存取字数据后,SP的修改必须是+2 或者-2; POP指令的DST不允许是CS寄存器;3、交换指令 XCHG (exchange)指令的汇编格式:XCHG OPR1,OPR2指令的基本功能:(OPR1) <->(OPR2)指令⽀持的寻址⽅式:⼀个操作数必须在寄存器中,另⼀个操作数可以在寄存器或存储器中。

指令对标志位的影戏:不影响标志位。

指令的特殊要求:不允许使⽤段寄存器。

⼆、累加器专⽤传送指令4、输⼊指令IN (input)输出指令OUT (output)指令的汇编格式:IN ac,port port<=0FFHIN ac,DX port>0FFHOUT port,ac port<=0FFHOUT DX,ac port>0FFH指令的基本功能:对8086及其后继机型的微处理机,所有I/O端⼝与CPU之间的通信都由输⼊输出指令IN和OUT来完成。

汇编语言指令大全

汇编语言指令大全

AAA 未组合的十进制加法调整指令 AAA(ASCII Adgustfor Addition)格式: AAA功能: 对两个组合的十进制数相加运算(存在AL中)的结果进行调整,产生一个未组合的十进制数放在AX中. 说明:1. 组合的十进制数和未组合的十进制数:在计算中,十进制数可用四位二进制数编码,称为BCD码.当一个节(8位)中存放一位BCD码,且放在字节的低4位, 高4位为时称为未组合的BCD码.2. AAA的调整操作若(AL) and 0FH>9 或 AF=1,则调整如下:(AL)<--(AL)+6,(AH)<--(AH)+1,AF=1,CF<--AF,(AL)<--(AL) and 0FHAAD 未组合十进制数除法调整指令 AAD(ASCII Adjustfor Division)格式: AAD功能: 在除法指令前对AX中的两个未组合十进制数进行调整,以便能用DIV指令实现两个未组合的十进制数的除法运算,其结果为未组合的十进制数,商(在AL中)和余数(在AH中). 说明:1. AAD指令是在执行除法DIV之前使用的,以便得到二进制结果存于AL中,然后除以OPRD,得到的商在AL中,余数在AH 中.2. 示例: MOV BL,5MOV AX,0308HAAD ;(AL)<--1EH+08H=26H,(AH)<--0DIV BL ;商=07H-->(AL),余数=03H-->(AH).AAM 未组合十进制数乘法调整指令 AAM(ASCII AdjustMULtiply)格式: AAM功能: 对两个未组合的十进制数相乘后存于AX中的结果进行调整,产生一个未组合的十进制数存在AL中. 说明:1. 实际上是两个未组合的十进制数字节相乘,一个0~9的数与另一个0~9的数相乘其积最大为81.为了得到正确的结果,应进行如下调整:乘积: (AH)<--(AL)/10(AL)<--(AL)MOD102. 本指令应跟在MUL指令后使用,乘积的两位十进制结果,高位放在AH中,低位放在AL中.AH内容是MUL指令的结果被10除的商,即(AL)/10,而最后的AL内容是乘积被10整除的余数(即个位数).AAS 未组合十进制减法调整指令 AAS(ASCII Adjust forSubtraction)格式: AAS功能: 对两个未组合十进制数相减后存于AL中的结果进行调整,调整后产生一个未组合的十进制数数且仍存于AL中. 说明:1. 本指令影响标志位CF及AF.2. 调整操作若(AL) and 0FH > 9 或 AF=1则(AL)<--(AL)-6,(AH)<--(AH)-1,CF<--AF,(AL)<--(AL) and 0FH,否则(AL)<--(AL) and 0FHADC 带进位加法指令ADC(Addition Carry)格式: ADC OPRD1,OPRD2功能: OPRD1<--OPRD1 +OPRD2 + CF 说明:1. OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数. OPRD2为立即数,也可以是任意一个通用寄存器操作数.立即数只能用于源操作数.2. OPRD1和OPRD2均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的,但不允许两个都是存储器操作数.3. 加法指令运算的结果对CF、SF、OF、PF、ZF、AF都会有影响.以上标志也称为结果标志.4. 该指令对标志位的影响同ADD指令.ADD 加法指令 ADD(Addition) 格式: ADD OPRD1,OPRD2功能: 两数相加说明:1. OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数. OPRD2为立即数,也可以是任意一个通用寄存器操作数.立即数只能用于源操作数.2. OPRD1和OPRD2均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的, 但不允许两个都是存储器操作数.3. 加法指令运算的结果对CF、SF、OF、PF、ZF、AF都会有影响.以上标志也称为结果标志.加法指令适用于无符号数或有符号数的加法运算. AND 逻辑与运算指令 AND 格式: AND OPRD1,OPRD2 功能: 对两个操作数实现按位逻辑与运算,结果送至目的操作数.本指令可以进行字节或字的‘与’运算, OPRD1<--OPRD1 and OPRD2. 说明:1. 目的操作数OPRD1为任一通用寄存器或存储器操作数.源操作数OPRD2为立即数,任一通用寄存器或存储器操作数.2. 示例: AND AL,0FH ;(AL)<--(AL) AND 0FHAND AX,BX ;(AX)<--(AX) AND (BX)AND DX,BUFFER[SI+BX]AND BETA[BX],00FFH注意: 两数相与,有一个数假则值为假CALL 过程调用指令 CALL 格式: CALL OPRD 功能: 过程调用指令 说明:1. 其中OPRD 为过程的目的地址.2. 过程调用可分为段内调用和段间调用两种.寻址方式也可以分为直接寻址和间接寻址两种.3. 本指令不影响标志位.CBW 字节扩展指令 CBW(Convert Byte to Word) 格式: CBW 功能: 将字节扩展为字,即把AL 寄存器的符号位扩展到AH 中. 说明:1. 两个字节相除时,先使用本指令形成一个双字节长的被除数.2. 本指令不影响标志位.3. 示例: MOV AL,25CBWIDIV BYTE PTR DATA1CLC 处理器控制指令-标志位操作指令 格式:CLC ;置CF=0STC ;置CF=1CMC ;置CF=(Not CF)进位标志求反CLD ;置DF=0STD ;置DF =1CLI ;置IF=0,CPU 禁止响应外部中断STI ;置IF=1,使CPU 允许向应外部中断功能: 完成对标志位的置位、复位等操作.说明: 例如串操作中的程序,经常用CLD 指令清方向标志使DF =0,在串操作指令执行时,按增量的方式修改吕指针. CLD 处理器控制指令-标志位操作指令 格式:CLC ;置CF=0STC ;置CF=1CMC ;置CF=(Not CF)进位标志求反CLD ;置DF=0STD ;置DF =1CLI ;置IF=0,CPU 禁止响应外部中断STI ;置IF=1,使CPU 允许向应外部中断功能: 完成对标志位的置位、复位等操作.说明: 例如串操作中的程序,经常用CLD 指令清方向标志使DF =0,在串操作指令执行时,按增量的方式修改吕指针. CLI处理器控制指令-标志位操作指令 格式:CLC ;置CF=0STC ;置CF=1CMC ;置CF=(Not CF)进位标志求反CLD ;置DF=0STD ;置DF =1CLI ;置IF=0,CPU 禁止响说明: 例如串操作中的程序,经常用CLD 指令清方向标志使DF =0,在串操作指令执行时,按增量的方式修改吕指针.应外部中断STI ;置IF=1,使CPU允许向应外部中断功能: 完成对标志位的置位、复位等操作.CMC 处理器控制指令-标志位操作指令格式:CLC ;置CF=0STC ;置CF=1CMC ;置CF=(Not CF)进位标志求反CLD ;置DF=0STD ;置DF=1CLI ;置IF=0,CPU禁止响应外部中断STI ;置IF=1,使CPU允许向应外部中断功能: 完成对标志位的置位、复位等操作. 说明: 例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.CMP 比效指令 CMP(CoMPare)格式: CMP OPRD1,OPRD2功能: 对两数进行相减,进行比较. 说明:1. OPRD1为任意通用寄存器或存储器操作数.OPRD2为任意通用寄存器或存储器操作数,立即数也可用作源操作数OPRD2.2. 对标志位的影响同SUB指令,完成的操作与SUB指令类似,唯一的区别是不将OPRD1-OPRD2的结果送回OPRD1,而只是比较.3. 在8088/8086指令系统中,专门提供了一组根据带符号数比较大小后,实现条件转移的指令.CMPS 字符串比较指令格式: CMPS OPRD1,OPRD2CMPSBCMPSW功能: 由SI寻址的源串中数据与由DI寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身.同时SI,DI将自动调整. 说明:1. 其中OPRD2为源串符号地址,OPRD1为目的串符号地址.2. 本指令影响标志位AF、CF、OF、SF、PF、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.3. 与MOVS相似,CMPS指令也可以不使用操作数,此时可用指令CMPSB或CMPSW分别表示字节串比较或字串比较.CMPSB 字符串比较指令格式: CMPS OPRD1,OPRD2CMPSB CMPSW功能: 由SI寻址的源串中数据与由DI寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身.同时SI,DI将自动调整. 说明:1. 其中OPRD2为源串符号地址,OPRD1为目的串符号地址.2. 本指令影响标志位AF、CF、OF、SF、PF、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.3. 与MOVS相似,CMPS指令也可以不使用操作数,此时可用指令CMPSB或CMPSW分别表示字节串比较或字串比较.CMPSW 字符串比较指令格式: CMPS OPRD1,OPRD2CMPSB CMPSW功能: 由SI寻址的源串中数据与由DI寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身.同时SI,DI将自动调整. 说明:1. 其中OPRD2为源串符号地址,OPRD1为目的串符号地址.2. 本指令影响标志位AF、CF、OF、SF、PF、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.3. 与MOVS相似,CMPS指令也可以不使用操作数,此时可用指令CMPSB或CMPSW分别表示字节串比较或字串比较.CWD 字扩展指令 CWD(ConvertWord to Double Word)格式: CWD功能: 将字扩展为双字长,说明:1. 两个字或字节相除时,先用本指令形成一个双字长的的被除数.2. 本指令不影响标志位.即把AX寄存器的符号位扩展到DX中. 3. 示例: 在B1、B2、B3字节类型变量中,分别存有8们带符号数a、b、c,实现(a*b+c)/a运算。

汇编语言的所有指令

汇编语言的所有指令

汇编语言的所有指令数据传送指令集MOV功能: 把源操作数送给目的操作数语法: MOV 目的操作数,源操作数格式: MOV r1,r2MOV r,mMOV m,rMOV r,dataXCHG功能: 交换两个操作数的数据语法: XCHG格式: XCHG r1,r2 XCHG m,r XCHG r,mPUSH,POP功能: 把操作数压入或取出堆栈语法: PUSH 操作数POP 操作数格式: PUSH r PUSH M PUSH data POP r POP mPUSHF,POPF,PUSHA,POPA功能: 堆栈指令群格式: PUSHF POPF PUSHA POPALEA,LDS,LES功能: 取地址至寄存器语法: LEA r,m LDS r,m LES r,mXLAT(XLATB)功能: 查表指令语法: XLAT XLAT m算数运算指令ADD,ADC功能: 加法指令语法: ADD OP1,OP2 ADC OP1,OP2格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data影响标志: C,P,A,Z,S,OSUB,SBB功能:减法指令语法: SUB OP1,OP2 SBB OP1,OP2格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data影响标志: C,P,A,Z,S,OINC,DEC功能: 把OP的值加一或减一语法: INC OP DEC OP格式: INC r/m DEC r/m影响标志: P,A,Z,S,ONEG功能: 将OP的符号反相(取二进制补码)语法: NEG OP格式: NEG r/m影响标志: C,P,A,Z,S,OMUL,IMUL功能: 乘法指令语法: MUL OP IMUL OP格式: MUL r/m IMUL r/m影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志)DIV,IDIV功能:除法指令语法: DIV OP IDIV OP格式: DIV r/m IDIV r/mCBW,CWD功能: 有符号数扩展指令语法: CBW CWDAAA,AAS,AAM,AAD功能: 非压BCD码运算调整指令语法: AAA AAS AAM AAD影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD)DAA,DAS功能: 压缩BCD码调整指令语法: DAA DAS影响标志: C,P,A,Z,S位运算指令集AND,OR,XOR,NOT,TEST功能: 执行BIT与BIT之间的逻辑运算语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位SHR,SHL,SAR,SAL功能: 移位指令语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL影响标志: C,P,Z,S,OROR,ROL,RCR,RCL功能: 循环移位指令语法: ROR r/m,data/CL ROL r/m,data/CL RCR r/m,data/CL RCL r/m,data/CL 影响标志: C,P,Z,S,O程序流程控制指令集CLC,STC,CMC功能: 设定进位标志语法: CLC STC CMC标志位: CCLD,STD功能: 设定方向标志语法: CLD STD标志位: DCLI,STI功能: 设定中断标志语法: CLI STI标志位: ICMP功能: 比较OP1与OP2的值语法: CMP r/m,r/m/data标志位: C,P,A,Z,OJMP功能: 跳往指定地址执行语法: JMP 地址JXX功能: 当特定条件成立则跳往指定地址执行语法: JXX 地址注:A: ABOVE,当C=0,Z=0时成立B: BELOW,当C=1时成立C: CARRY,当弁时成立CXZ: CX寄存器的值为0(ZERO)时成立E: EQUAL,当Z=1时成立G: GREATER(大于),当Z=0且S=0时成立L: LESS(小于),当S不为零时成立N: NOT(相反条件),需和其它符号配合使用O: OVERFLOW,O=1时成立P: PARITY,P=1时成立PE: PARITY EVEN,P=1时成立PO: PARITY ODD,P=0时成立S: SIGN,S=1时成立Z: ZERO,Z=1时成立LOOP功能: 循环指令集语法: LOOP 地址LOOPE(Z)地址LOOPNE(Z) 地址标志位: 无CALL,RET功能: 子程序调用,返回指令语法: CALL 地址RET RET n标志位: 无INT,IRET功能: 中断调用及返回指令语法: INT n IRET标志位: 在执行INT时,CPU会自动将标志寄存器的值入栈,在执行IRET时则会将堆栈中的标志值弹回寄存器字符串操作指令集MOVSB,MOVSW,MOVSD功能: 字符串传送指令语法: MOVSB MOVSW MOVSD标志位: 无CMPSB,CMPSW,CMPSD功能: 字符串比较指令语法: CMPSB CMPSW CMPSD标志位: C,P,Z,S,OSCASB,SCASW功能: 字符串搜索指令语法: SCASB SCASW标志位: C,P,Z,S,OLODSB,LODSW,STOSB,STOSW功能: 字符串载入或存贮指令语法: LODSB LODSW STOSB STOSW标志位: 无REP,REPE,REPNE功能: 重复前缀指令集语法: REP 指令S REPE 指令S REPNE 指令S标志位: 依指令S而定对于IBM PC机它有它的指令系统,其中包括:数据传送指令、串处理指令、算术指令、控制移动指令、逻辑指令、处理机控制指令。

《汇编语言功能号大全》

《汇编语言功能号大全》

《汇编语言功能号大全》汇编语言功能号大全汇编语言是一种底层、机器级别的编程语言,主要用于编写低层次的系统软件和嵌入式设备的驱动程序。

在汇编语言中,各种功能号(Function Code)被用于告知计算机执行特定的操作,在编写程序时起到了至关重要的作用。

本文将为您介绍一些常用的汇编语言功能号,以帮助您更好地理解和运用汇编语言。

1. 数据传输功能号数据传输是汇编语言中最基本的操作之一。

以下是一些常见的数据传输功能号:1.1 MOV:将数据从一个位置复制到另一个位置。

1.2 XCHG:交换两个位置中的数据。

1.3 LEA:将一个内存地址复制到一个寄存器中。

1.4 PUSH:将数据压入栈中。

1.5 POP:将数据从栈中弹出。

2. 算术运算功能号算术运算在编程中经常用到,汇编语言提供了丰富的算术运算功能号,包括:2.1 ADD:将两个数相加。

2.2 SUB:从一个数中减去另一个数。

2.3 INC:将一个数加1。

2.4 DEC:将一个数减1。

2.5 MUL:将两个数相乘。

2.6 DIV:将一个数除以另一个数。

3. 逻辑运算功能号逻辑运算是程序中常用的操作之一,以下是一些常见的逻辑运算功能号:3.1 AND:对两个数执行逻辑与操作。

3.2 OR:对两个数执行逻辑或操作。

3.3 XOR:对两个数执行逻辑异或操作。

3.4 NOT:对一个数执行逻辑非操作。

4. 控制转移功能号控制转移是指在程序执行过程中跳转到另一个位置继续执行,以下是一些常见的控制转移功能号:4.1 JMP:无条件跳转到指定地址。

4.2 JZ:如果零标志位为真,则跳转到指定地址。

4.3 JC:如果进位标志位为真,则跳转到指定地址。

4.4 JNC:如果进位标志位为假,则跳转到指定地址。

4.5 CALL:调用一个子程序。

4.6 RET:返回到调用子程序的位置。

5. 中断功能号中断是汇编语言中常用的机制之一,用于处理外部事件和异常情况。

以下是一些常见的中断功能号:5.1 INT:触发指定的中断。

汇编指令符号大全

汇编指令符号大全

80X86 汇编指令符号大全+、-、*、/∶算术运算符。

&∶宏处理操作符。

宏扩展时不识别符号和字符串中的形式参数,如果在形式参数前面加上一个& 记号,宏汇编程序就能够用实在参数代替这个形式参数了。

$∶地址计数器的值——记录正在被汇编程序翻译的语句地址。

每个段均分配一个计数器,段内定义的所有标号和变量的偏移地址就是当前汇编地址计数器的值。

∶操作数。

在数据定义语句中,操作数用?,其作用是分配并保留存储空间,但不存入确定的数据。

=∶等号伪指令——符号定义。

对符号进行定义和赋值,功能与 EQU相似,但允许(重复)再定义。

:∶修改属性运算符(操作符)——段操作符。

用来临时给变量、标号或地址表达式指定一个段属性(不用缺省的段寄存器),自动生成一个“跨段前缀字节”。

注意,段寄存器CS和ES不能被跨越,堆栈操作时也不能跨越SS。

;∶注释符号。

%∶特殊宏操作符,用来将其后的表达式(通常是符号常数,不能是变量名和寄存器名)转换成它所代表的数值,并将此数值的ASCII码嵌入到宏扩展中。

( )∶1.运算符——用来改变运算符的优先级别。

2.教材符号,表示括号内存储单元(或寄存器)的内容。

< >∶宏调用时用来将带间隔符(如空格,逗号等)的字符串(作为实参)括起来。

[ ]∶1.运算符。

方括号括起来的数是数组变量的下标或地址表达式。

带方括号的地址表达式必须遵循下列原则,①只有BX、BP、SI、DI这四个寄存器可在方括号内出现;②BX或BP可单独出现在各方括号中,也可以与常数、SI或DI一起出现在方括号内,但不允许BX 和BP出现在同一个方括号内;③SI和DI可以单独出现在各方括号内,也可以与常数、BP 或BX一起出现在方括号内,但不允许SI和DI出现在同一个方括号内;④一个方括号内包含多个寄存器时,它们只能作加法运算;⑤若方括号内包含基址指针BP,则隐含使用堆栈段寄存器SS提供段基址,否则均隐含使用数据段寄存器DS提供段基址。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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=错误码
相关文档
最新文档