第三章宏汇编语言文档格式.docx
- 文档编号:22061981
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:13
- 大小:45.43KB
第三章宏汇编语言文档格式.docx
《第三章宏汇编语言文档格式.docx》由会员分享,可在线阅读,更多相关《第三章宏汇编语言文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
●判断框中为陈述句
●判断框的分支上要标明Y和N
3.2机器指令
格式:
[标号:
]操作符OPD,OPS[;
注释]
●OPD、OPS类型一致
●OPD不能为立即数
●结果在OPD,OPS内容不变
●OPD、OPS不能为内存操作数
如:
MOVBYTEPTR[2000H],[2100H]
3.2.1.数据传送指令
功能:
将数据、地址、立即数送入寄存器或存贮器。
这类指令有:
MOV、XCHG、XLAT、LEA、LDS、LES等。
一.一般数据传送
1.传送指令
MOVOPD,OPS
(OPS)→OPD。
寄存器←→寄存器;
立即数→寄存器、存贮器;
存贮单元←→寄存器。
不能是:
单元←→单元。
2.数据交换指令
XCHG
OPD,OPS
(OPD)→OPS,(OPS)→OPD。
AX,BX
若执行前:
(AX)=5678H,(BX)=1234H
执行后:
(AX)=1234H,(BX)=5678H
寄存器←→寄存器,寄存器←→存贮器。
有一个必须为寄存器。
3.查表转换指令(换码指令)
XLATOPS;
或XLAT
([BX+AL])→AL,将(BX)为首址,(AL)为位移量的字节单元数据→AL。
此时字节单元物理位置PA=(DS)左移4位+(BX)+(AL)。
该指令主要用于代码转换,如把字符转换成ASCII码。
DATASEGMENT
TABDB‘01234576’
DATAENDS
…
MOVBX,OFFSETTAB
MOVAL,4
XLATTAB
([BX+AL])=‘4’=34H,结果为4的ASCII码
利用XLAT查出某数值的ASCII码。
二.地址传送指令
1.传送偏移地址指令
LEAOPD,OPS等价于MOVOPD,OFFSET
OPS。
OPS的偏移地址→OPD。
LEAAX,BUF等价于MOVOPD,OFFSETBUF。
OPD必须为16位寄存器。
2.传送偏移地址及数据首址指令
LDSOPD,OPS
(OPS)→OPD,(OPS+2)→DS。
将OPS所指的4个字节内容送OPD和DS。
LDSSI,[10H]
执行前:
(DS)=C000H,(C0010H)=180H,(C0012H)=2000H。
(SI)=180H,(DS)=2000H。
●OPD必须为16位寄存器;
●OPS必须为存贮器地址,类型为DD。
3.传送偏移地址及附加数据段指令
LESOPD,OPS
(OPS)→OPD,(OPS+2)→ES。
与LDS指令类似。
3.2.2.算术指令
算术指令包括:
加、减、乘、除及符号扩展指令
指令的共同特点:
对SF、OF、ZF、CF、AF等标志有影响,具体影响见教材附录。
指令分类:
二进制指令、十六进制指令。
运算原则:
有符号数在机内均用补码表示,最高位为符号位,计算机在运算时,不单独处理符号,而是将符号作为数值一起参加运算。
主要讲二进制指令。
1.加法指令
ADDOPD,OPS;
功能:
(OPS)+(OPD)→OPD
INCOPD;
(OPD)+1→OPD
OPD不能是立即数。
2.减法指令
SUBOPD,OPS;
(OPD)-(OPS)→OPD
DECOPD;
(OPD)-1→OPD
NEGOPD;
(
)+1→OPD。
(求补)
CMPOPD,OPS;
(OPD)-(OPS)不回送结果,只影响标志。
例:
求(AX)的绝对值。
CMPAX,0
JGEEXIT;
(AX)≥0时,跳到EXIT
NEGAX;
(AX)<
0时,求补,得到绝对值
EXIT:
如果是进行加、减运算,对有符号数,当OF=0时,运算结果正确;
对无符号数,当CF=0时,结果正确。
3.乘法指令
(1)单操作数乘法指令
有符号乘法:
IMULOPS;
无符号乘法:
MULOPS;
被乘数隐含在AX(AL)中。
是字乘法还是字节乘法,由OPS决定。
MOVAX,50H
MOVBX,-10H
IMULBX
结果:
(DX)=FFFFH,(AX)=FB00H。
●目的操作数必须是AX(字乘法是AX,字节是AL)。
●OPS不能是立即数。
●除了对CF和OF有影响外,对其它标志的改变无意义。
若MUL运算后,(AH)或(DX)为0,则CF、OF均为0;
否则CF、OF均为1。
对IMUL来说,若乘积的高一半是底一半的符号扩展,则CF、OF=0;
否则CF、OF=1。
(2)双操作数乘法指令
IMULOPD,OPS
(OPS)*(OPD)→OPD
●目的操作数必须是16/32位寄存器
●源操作数可以是立即数。
●目的操作数和源操作数必须类型一致
(3)3个操作数乘法指令
IMULOPD,OPS,n
(OPS)*n→OPD
●源操作数不能是立即数。
4.符号扩展指令
同乘法一样,除法也有字和字节之分。
如果是字除法,被除数也要求是双精度数。
从单精度数到双精度数,涉及到符号扩展的问题。
补码的符号位扩展:
8位补码(-1)=FFH,16位补码(-1)=FFFFH。
(1)字节转换成字
CBW
将AL中的符号扩展到AH中。
MOVAL,-7
CBW执行前:
(AL)=F9H,执行后:
(AX)=FFF9H。
(2)字转为双字
CWD
将AX的符号扩展到DX中。
(3)字转为双字
CWDE
将AX的符号扩展到EAX中。
(4)32位转为64位
CDQ
将EAX的符号扩展到EDX中。
5.除法指令
有符号除法:
IDIVOPS;
无符号除法:
DIVOPS。
字节除法:
(AX)/(OPS)→AL(商)、AH(余数)
字除法:
(DX、AX)/(OPS)→AX(商)、DX(余)
双字除法:
(EDA、EAX)/(OPS)→EAX(商)、EDX(余)
由OPS决定是字节、字除法。
MOVAX,-4001H
MOVCX,4
IDIV
CX
(DX)=FFFFH(余数),(AX)=F000H(商)。
MOVCX,-4
(DX)=FFFFH(余数),(AX)=1000H(商)。
●如果是无符号除法,被除数符号的扩展不能用CBW、CWD。
只能:
MOV
AX,A;
DX,0。
●OPS不能为立即数。
●除数为0时,产生溢出,导致溢出中断。
●有符号除法,余数与被除数符号相同。
3.2.3.位操作指令
一.逻辑运算指令
包括:
求反、逻辑乘、测试、逻辑加、按位加等。
1.求反
NOTOPD;
将OPD的内容逐位取反→OPD。
该指令不影响标志位。
注意与求补的区别。
(求补NEGOPD)。
NOTAH;
执行前(AH)=20H,执行后:
(AH)=DFH。
2.逻辑乘
ANDOPD,OPS;
OPD∧OPS→OPD
该指令对SF、ZF、PF、OF、CF有影响。
运算规则:
1∧1=1,1∧0=0,0∧1=0,0∧0=0。
ANDDX,0FFH
(DX)=ABCDH,执行后:
(DX)=CDH。
屏蔽高8位。
再如:
ANDAL,0FH
(AL)=‘5’=35H,执行后:
(AL)=5,得到‘5’字符的实际值5。
AND也可作为运算符:
AEQU0B6H
ANDAL,AAND0FDH
在汇编过程中,将式子AAND0FDH的值求出为:
0B4H。
3.测试指令
(1)格式:
TESTOPD,OPS
(OPD)∧(OPS),结果不回送,影响标志SF、ZF、PF。
用途:
检测与OPS中为1的位相对应的位是否为1。
TESTAL,80H
JNZH
H:
MOVBX,CX
测AL最高位b7是否为0,不为0转移到H
(2)格式:
BTOPD,OPS
将OPD的指定位送到CF
●OPD为16/32位
●OPS为立即数或寄存器
●若OPS绝对值大于OPD位数,则取模
4.逻辑加
OROPD,OPS
(OPD)∨(OPS)→OPD,影响标志位:
CF、OF、PF、SF、ZF。
运算法则:
1∨1=1,1∨0=1,0∨1=1,0∨0=0。
ORAH,55H
(AH)=0AAH,执行后:
(AH)=0FFH
5.按位加
XOROPD,OPS
(OPD)(OPS)→OPD,影响标志CF、OF、PF、SF、ZF等。
11=0,10=1,01=1,00=0。
XORAX,AX
(AX)=0,等价于MOVAX,0
XORAX,123H
JZH
MOVBX,5
若(AX)=123H,则转移到H
二.移位指令
算术、逻辑、循环移位。
]操作符OPD,n
]操作符OPD,CL
1.算术、逻辑移位
(1)算术左移或逻辑左移
SALOPD,n或SHLOPD,n
(OPD)向左移指定的次数,低位补0。
CF
SAL
AL,1
(AL)=5,
(AL)=0AH
●每左移一次,相当于原来的数*2,左移n次,相当于*2n。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 汇编语言
