第四章8086指令

合集下载

8086指令集机器码

8086指令集机器码

8086指令集机器码
2. ADD指令(将两个数相加并将结果存储在目标位置): - 寄存器相加: 机器码:01 D1(例如,将ECX寄存器的值与EDX寄存器的值相加) - 立即数与寄存器相加: 机器码:83 C0 05(例如,将EAX寄存器的值与立即数05相加)
3. JMP指令(无条件跳转到指定的地址): - 相对短跳转: 机器码:EB rel8(例如,EB 05,跳转到相对偏移量为05的地址) - 相对长跳转: 机器码:E9 rel16(例如,E9 1234,跳转到相对偏移量为1234的地址)
8086指令集机器码
8086指令集是Intel 8086处理器的指令集架构,它定义了一系列的机器码(二进制代码 )来执行不同的操作。下面是一些常见的8086指令及其对应的机器码示例:
1. MOV指令(将数据从一个位置移动到另一个位置): - 传送立即数到寄存器: 机器码:B8 imm16(例如,B8 1234) - 传送寄存器到寄存器: 机器码:89 C1(例如,将EAX寄存器的值传送到ECX寄存器) - 传送内存到寄存器: 机器码:8B 45 08(例如,将偏移地址为08的内存单元的值传送到EAX寄存器)
8086指令集机器码
4. INT指令(触发中断): - 软中断: 机器码:CD int8(例如,CD 1,触发21号软中断)
这是8086指令集中的示例,每个指令都有特定的操作码和操作数,机器码的格式和长度 也会有所不同。如果需要查找特定指令的机器码,可以参考8086处理器的文档或相关资料。

8086算术、逻辑运算及移位指令

8086算术、逻辑运算及移位指令

8086算术、逻辑运算及移位指令8086是一种基于x86架构的微处理器,具有广泛应用的能力。

它支持多种算术、逻辑运算和移位指令,这些指令为编程人员提供了强大的工具来处理数据和操纵位级操作。

算术指令是8086中非常重要的一部分。

它们允许我们对数据执行各种加减乘除运算。

例如,ADD指令用于对两个数进行加法运算,这通常用于求和操作。

而SUB指令则用于执行减法运算,可用于计算差值。

MUL和DIV指令则用于执行乘法和除法操作,它们对于处理需要大量数值计算的应用程序非常有用。

逻辑运算指令也是8086中的重要组成部分。

它们用于执行与、或、非和异或等逻辑运算。

AND指令用于执行位级与运算,可以对数据的每个位进行逻辑与操作。

OR指令执行逻辑或运算,可以通过将各个位进行逻辑或操作来组合数据。

NOT指令用于执行位级非运算,将数据的每个位取反。

XOR指令执行异或运算,可以对数据的位进行逻辑异或操作。

这些逻辑运算指令非常灵活,可用于编写各种数据处理和逻辑判断的算法。

移位指令允许我们在数据的二进制位级上进行操作。

8086提供了逻辑左移、逻辑右移、算术左移和算术右移指令。

逻辑左移指令将数据在二进制位级上向左移动,相当于乘以2。

逻辑右移指令将数据在二进制位级上向右移动,相当于除以2。

算术左移和算术右移指令与逻辑移位指令类似,但在进行移位时保留了最高位的符号位,以保持有符号整数的正负性。

这些运算和移位指令在编程中起着至关重要的作用。

通过巧妙地组合使用这些指令,我们可以实现各种复杂的计算和逻辑操作。

例如,我们可以使用算术和移位指令来实现高效的乘法和除法算法,减少计算时间和资源消耗。

我们还可以使用逻辑指令来处理数据的位级运算,例如检查某一位是否为1、设置某一位为1或将某一位清零。

为了更好地理解这些指令的功能和用法,编程人员需要深入学习和实践。

通过掌握8086的算术、逻辑和移位指令,我们可以编写更高效和功能强大的程序,提高计算机应用的性能和效率。

48086CPU指令系统

48086CPU指令系统
• 不能使用段寄存器
XCHG DS,ES XCHG AX,DS XCHG DS,[ BX ] • 不能使用双存储器 XCHG [ BX ],[ SI ] • 不能使用立即数 XCHG AX,2000H XCHG 20H,BL
《例》用 MOV、PUSH,POP、XCHG 指令 完成两寄存器AX、BX 中数据的交换
• 指令格式

指令功能
OPR1、OPR2 两个操作数间交换数据
数据传送类指令
XCHG指令的应用范围
• 通用寄存器与通用寄存器间交换数据
XCHG AX,BX XCHG DL,CH • 通用寄存器与存储器间交换数据 XCHG AX,[ BX ] XCHG [ SI ],AL
数据传送类指令
XCHG指令的 禁用情况
通用传送指令 PUSH、POP 中 src、dst 操作数的使用
• 为通用寄存器、段寄存器操作数
PUSH AX、PUSH ES POP DS、 POP BX • 为存储器操作数 PUSH [ 2000H ]、PUSH [ BX ] POP [ BX ]、 POP [ 1000H ]
通用传送指令PUSH、POP中 src、dst 操作数的禁用
数据传送类指令
指令 LEA 与 LDS,LES 的区别
• LEA src
scr 表示存储器地址本身
• LDS r,src
LES r,src src 表示存储器地址中的值
地址传送指令的比较
已知:DS=09A0H,BX= 0048H
LEA DI,[BX] → 执行后:DI=0048H 等价于 MOV DI,OFFSET [BX] LDS DI,[BX] → 执行后:DI=003EH DS=0816H LES DI,[BX] → 执行后:DI=003EH ES=0816H Memory

第4章指令系统层习题参考解答-汇编语言与计算机组成原理 答案

第4章指令系统层习题参考解答-汇编语言与计算机组成原理 答案

1.什么是“程序可见”的寄存器?程序可见寄存器是指在用户程序中用到的寄存器,它们由指令来指定。

2. 80x86微处理器的基本结构寄存器组包括那些寄存器?各有何用途?基本结构寄存器组按用途分为通用寄存器、专用寄存器和段寄存器3类。

通用寄存器存放操作数或用作地址指针;专用寄存器有EIP和EFLAGS,分别存放将要执行的下一条指令的偏移地址和条件码标志、控制标志和系统标志;段寄存器存放段基址或段选择子。

3.80x86微处理器标志寄存器中各标志位有什么意义?常用的7位:CF进位标志: 在进行算术运算时,如最高位(对字操作是第15位,对字节操作是第7位)产生进位或借位时,则CF置1;否则置0。

在移位类指令中,CF用来存放移出的代码(0或1)。

PF奇偶标志: 为机器中传送信息时可能产生的代码出错情况提供检验条件。

当操作结果的最低位字节中1的个数为偶数时置1,否则置0。

AF辅助进位标志: 在进行算术运算时,如低字节中低4位(第3位向第4位)产生进位或借位时,则AF置1;否则AF置0。

ZF零标志:如指令执行结果各位全为0时,则ZF置1;否则ZF置0。

SF符号标志:其值等于运算结果的最高位。

如果把指令执行结果看作带符号数,就是结果为负,SF置1;结果为正,SF置0。

OF溢出标志: 将参加算术运算的数看作带符号数,如运算结果超出补码表示数的范围N,即溢出时,则OF置1;否则OF置0。

DF方向标志: 用于串处理指令中控制处理信息的方向。

当DF位为1时,每次操作后使变址寄存器SI和DI减小;当DF位为0时,则使SI和DI增大,使串处理从低地址向高地址方向处理。

4.画出示意图,简述实模式下存储器寻址的过程。

20位物理地址如下计算(CPU中自动完成):10H×段基址+偏移地址=物理地址5. 画出示意图,简述保护模式下(无分页机制)存储器寻址的过程。

采用对用户程序透明的机制由选择子从描述子表中选择相应的描述子,得到欲访问段的段基址、段限等有关信息,再根据偏移地址访问目标存储单元。

8086指令系统总结

8086指令系统总结

8086指令系统总结8086是一种x86架构的微处理器,由Intel公司于1978年推出。

它是16位的,拥有20位的物理寻址能力,可以访问1MB的内存空间。

8086指令系统是其所支持的一系列指令集合,下面将对8086指令系统进行详细总结。

数据传输指令是8086指令系统中的基础指令之一,用于将数据从一个位置传输到另一个位置。

其中包括mov指令、xchg指令、push指令和pop指令等。

mov指令用于将数据从一个存储位置复制到另一个存储位置;xchg指令用于交换两个存储位置中的数据;push指令用于将数据压入栈顶;pop指令用于将栈顶的数据弹出。

算术运算指令是用于进行各种算术运算的指令。

8086支持包括加法、减法、乘法和除法等多种算术运算指令。

例如,add指令用于将两个操作数相加,sub指令用于将第二个操作数从第一个操作数中减去,mul指令用于将两个操作数相乘,div指令用于将第一个操作数除以第一个操作数,并将结果保存在指定的寄存器中。

逻辑运算指令用于进行逻辑运算,包括与、或、非、异或等运算。

例如,and指令用于对两个操作数进行按位与运算,or指令用于对两个操作数进行按位或运算,not指令用于对一个操作数进行按位非运算,xor指令用于对两个操作数进行按位异或运算。

控制转移指令用于控制程序的执行流程。

包括无条件转移指令、条件转移指令和循环指令。

无条件转移指令用于无条件地跳转到指定的地址,例如jmp指令;条件转移指令用于根据一些条件是否成立来进行跳转,例如je指令(跳转到指定地址,如果上一次比较操作相等);循环指令用于循环执行指定的指令块,例如loop指令。

I/O指令用于进行输入输出操作,包括从外部设备读取数据和将数据写入外部设备。

例如,in指令用于将输入端口的数据读取到指定的寄存器中,out指令用于将指定的寄存器中的数据写入到输出端口。

此外,8086还支持一些特殊的指令,如访问标志寄存器的指令,控制指令(如hlt指令、nop指令)和字符串指令(如movsb指令、cmpsb指令)等。

8086汇编指令

8086汇编指令
5>处理器控制指令 T`| >oX
HLT 处理器暂停, 直到出现中断或复位信号才继续. O MN|ea.O
WAIT 当芯片引线TEST为高电平时使CPU进入等待状态. &ET PYf %#
ESC 转换到外处理器. Kl+4 A} Uo
LOCK 封锁总线. %'[ pucEF
NOP 空操作. bn"z&g
POPD 32位标志出栈. @A6 iY
二、算术运算指令 J 299 mgB
ADD 加法. (RI)<zaK ;
ADC 带进位加法. ~+ {*KPiD
INC 加 1. oO;L l? ~
AAA 加法的ASCII码调整. At@0G\^
DAA 加法的十进制调整. '| g sm O
STC 置进位标志位. y O?52YO
CLC 清进位标志位. *Ja,3Q q
CMC 进位标志取反. J~rjI 24
STD 置方向标志位. .2 ST Bh.;
CLD 清方向标志位. G X>T~i\f8
STI 置中断允许位. t M{U6 k
CLI 清中断允许位. z`rW2UO#a`
JO 溢出转移. PW -s F
JP/JPE 奇偶性为偶数时转移. ,,V uv n
JS 符号位为 "1" 时转移. E J Ta ~
3>循环控制指令(短转移) aDX 4 }`u
LOOP CX不为零时循环. I, ?!N zB
LOOPE/LOOPZ CX不为零且标志Z=1时循环. ; 5!8LmZ0#
XADD 先交换再累加.( 结果在第一个操作数里 ) PK +sGV

汇编第四章 习题及参考答案

汇编第四章 习题及参考答案

第四章习题及参考答案1. 在8086CPU中,如果SS的内容设置为1A4BH,堆栈的长度为100H字节,问:SP寄存器的初始化值为多少?SP初始指向哪个主存物理地址?参考答案:SP寄存器的初始化值为:100HSP初始指向的主存物理地址是:1A5B0H2.分别指出下列指令源操作数与目的操作数的寻址方式:(1)MOV ES, AX(2)ADD DS:[12H],AL(3)SUB BX,1200H(4)SHR AX,1(5)AND -28H[BP][DI], AX(6)MOV CX,LAB1[BX](7)SBB AX, [BX](8) OR DX,-360H[SI](9) ADC VAR1,CX(10) XOR [DI],AX参考答案:(1)寄存器,寄存器(2)直接, 寄存器(3)寄存器,立即(4)寄存器,立即(5)基址变址,寄存器(6)寄存器,相对(7)寄存器,寄存器间接(8)寄存器,相对(9)直接,寄存器(10)寄存器间接,寄存器3.指出下列指令的语法是否错误,若错误请改正。

(1)MOV DS, 1234H(2)ADD AH,AL(3)SUB CS,AX(4)MOV BX,[BX][SI](5)ADC VAR1,[BP][DI](6) SBB [BX][BP],AX(7)PUSH 5678H(8)SHL [BP][SI],CL(9)ROR AX,2(10)NEG AX,BX(11)LEA CS,AX(12)MOV AL,BX(13)ADD DS:200H,AX(14)AND [BX][BP],AH(15)OR BH,-16H[BP](16)CLC AX(17)MUL AX,BX(18)DIV 12H参考答案:(1) 错误,立即数不能直接传送到段寄存器中(2) 正确(3) 错误,不能对CS直接操作(4) 正确(5) 错误,两个操作数不能同时都在存储器中(6) 错误, 基址变址寻址方式中不能两个寄存器都是基址寄存器(7) 错误,立即数不能作为源操作数直接压入堆栈(8) 错误,目的操作数没有明确指明是字还是字节(9) 错误,移位次数大于1时,需将其提前存入CL中(10) 错误,操作数个数错误(11) 错误,目的操作数只能是16位通用寄存器(12) 错误, 操作数位数不一致(13) 正确(14) 错误, 基址变址寻址方式中不能两个寄存器都是基址寄存器(15) 正确(16) 错误,操作数个数错误(17) 错误,操作数个数错误(18) 错误,源操作数不能是立即数4. MOV BX, 2345HMOV CX, 2HCLROL BX,0FFHAND BX,CMP BX,045H执行上述程序段后,(BX)= 14H , ZF= 0 . 5. XOR AX, AX5HMOV AL,9HMOV BL,BLADD AL,AAA执行上述程序段后,(AX)= 104H , CF= 1 .6. 假设(DS)=1234H,(SI)=124H,(12464)=30ABH,(12484H)=464H,有以下程序段:[SI]LEA SI,[SI]MOV AX,1200HMOV [SI+22H],[SI+20H]LDS SI,[SI]ADD AX,执行上述程序段后,(AX)= 6156H , (SI)= 464H .7. MOV AX, 0EF23H0B5A7HMOV BX,INC AXNEG AXDEC BXNEG BX执行上述程序段后,(AX)= 10DCH ,(BX)= 4A5AH .。

8086CPU指令和伪指令(中英文全解)

8086CPU指令和伪指令(中英文全解)

8086CPU指令和寄存器英文全称。

一、数据传送指令比如,mov(move)、push、pop、pushf(push flags)、popf(pop flags)、xchg(exchange)等都是数据传送指令,这些指令实现寄存器和内存、寄存器和寄存器之间的单个数据传送。

二、算术运算指令比如,add、sub(substract)、adc(add with carry)、sbb(substract with borrow)、inc (increase)、dec(decrease)、cmp(compare)、imul(integer multiplication)、idiv (integer divide)、aaa(ASCII add with adjust)等都是算术运算指令,这些指令实现寄存器和内存中的数据运算。

它们的执行结果影响标志寄存器的sf、zf、of、cf、pf、af位。

三、逻辑指令比如,and、or、not、xor(exclusive or)、test、shl(shift logic left)、shr(shift logic right)、sal(shift arithmetic left)、sar(shift arithmetic right)、rol(rotate left)、ror(rotate right)、rcl(rotate left through carry)、rcr(rotate right through carry)等都是逻辑指令。

除了not 指令外,它们的执行结果都影响标志寄存器的相关标志位。

四、转移指令可以修改IP,或同时修改CS和IP的指令统称为转移指令。

转移指令分为一下几类。

(1)无条件转移指令,比如,jmp(jump);(2)条件转移指令,比如,jcxz(jump if CX is zero)、je(jump if equal)、jb(jump if below)、ja(jump if above)、jnb(jump if not below)、jna(jump if not above)等;(3)循环指令,比如,loop;(4)过程,比如,call、ret(return)、retf(return far);(5)中断,比如,int(interrupt)、iret(interrupt return)。

8086常用指令

8086常用指令
JMP FAR 变CS。执行操作为(IP)<-OPR的段内偏移地址;(CS)<-OPR所在段的段地址
JMP DWORD PTR OPR:执行的操作为(IP)<-(EA);(CS)<-(EA+2)
JMP指令不影响条件码。
四、标志寄存器传送指令
LAHF:Load AH with Flags
SAHF:Store AH into Flags
PUSHF/PUSHFD:标志位进栈
POPF/POPFD:标志位出栈
五、类型转换指令
CBW:字节转为字
CWD:字转为双字
CDQ:双字转4字
BSWAP:字节交换
REP指令:格式为:REP <串处理指令>,如REP INS等。执行规则是和循环类似,当CX=0时退出重复。由于这些串处理指令都只一次处理一个单位的数据,因此一般都需要与REP指令结合起来实现批量的数据传送。
结合REP指令的串处理指令用法实例: 若mess1,mess2是data段中指定的两个字符串,其中mess1在data中,为源串;mess2在extra中,为目的串
十四、条件转移指令
对单个条件标志比较,并由结果转移
JZ(JE):当结果为0或相等则跳转。相反:JNZ(JNE);
JS:当结果为负则跳转。相反:JNS;
JO:当溢出则跳转。相反:JNO;
JP(JPE):当奇偶位为1则跳转。相反:JNP(JPO);
JB(JNAE):当低于或CF=1则转移。相反:JNB(JAE),不低于则转移;
lea di,mess2;赋予目的变址DI
mov cx,17;指定重复次数
CLD;方向标志置零(从左向右扫描)

微原-第四章(3)

微原-第四章(3)

2)为无符号字节运算 05*04→(AX) 05*04→(AX) (AX)=0014H AX) CF=0 OF=0
3)为有符号字节运算,结果同上 为有符号字节运算,
4.2 8086/8088 指令系统
4)为有符号字运算 05*8004H=05*( 32764) →(DX:AX) 05*8004H=05*(-32764)=-163820 →(DX:AX) -163820=1000 0000 0000 0010 0111 1111 1110 1100(原码) 1100(原码) 0100(补码) =1111 1111 1111 1101 1000 0000 0001 0100(补码) (DX)=0FFFDH DX) (AX)=8014H AX) CF=1 OF=1
不能为立即数
4.2 8086/8088 指令系统
功能: 功能:
字节乘: 字节乘: AX
DST(被乘数) DST(被乘数) 被乘数 SRC(乘数) SRC(乘数) 乘数

(AL)
* *
(SRC) (SRC)
字乘: 字乘: DX:AX 积 (AX)
操作类型: SRC的类型确定 的类型确定。 操作类型:用SRC的类型确定。
乘法指令只影响CF和OF标志,其余标志均无意义。 乘法指令只影响CF和OF标志,其余标志均无意义。 CF 标志
4.2 8086/8088 指令系统
其中, 其中, CF=0 表明结果的高位字节(或字)为全0 表明结果的高位字节(或字)为全0。 OF=0 CF=1 表明结果的高位字节(或字)有有效积。 表明结果的高位字节(或字)有有效积。 OF=1
4.2 8086/8088 指令系统
总之, 总之,乘法指令中的目的操 作数一定为AL AL( 位数相乘) 作数一定为AL(8位数相乘)或AX 16位数相乘),源操作数不能 位数相乘), (16位数相乘),源操作数不能 为立即数, 为立即数,但可采用其它寻址方 式,指令对字节运算还是字运算 由源操作数的类型确定。 由源操作数的类型确定。

第4章Intel 80868088指令系统

第4章Intel 80868088指令系统

物理地址=30000H+1150H=31150H
执行后: (AX)=5678H。
第四章 Intel 8086/8088指令系统
5. 相对基址变址寻址
特点:操作数的有效地址是一个基址寄存器与一个变址寄 存器的内容之和再加上8位或16位位移量。同样,当基址寄存器 为BX时,用DS作为段寄存器; 而当基址寄存器为BP时,则用 SS作为段寄存器。因此物理地址为 (SI) 8位 位移量 物理地址=(DS)×16+ (BX)+ + (DI) 16位 (SI) 8位 位移量 + 物理地址=(SS)×16+ (BP)+ (DI) 16位
执行后: (AX)=1234H, (BX)不变。
第四章 Intel 8086/8088指令系统
4.1.4 存储器寻址
操作数在存储器中。存储器是分段管理的, 要找到操作数, 必须指明操作数所在的段(段基址由段寄存器指明)及段内偏 移地址(以有效地址EA的形成方式指出)。 1. 直接寻址方式 特点:指令中直接给出操作数在段内的偏移量,段基址隐 含给出或用段前缀指明。该寻址方式适用于处理单个变量。
4.1.1 8086/8088的通用指令格式 机器语言指令是由二进制代码组成的。一条指令是由操作 码与操作数字段构成的,其一般格式为 操作码字段 + 操作数字段 操作码字段指明计算机所要执行的操作(即功能);操作 数字段指出在指令执行过程中所需要的操作数。 例如: ADD AX, BX
第四章 Intel 8086/8088指令系统
变址寄存器内容之和。 (SI) 物理地址=(DS)×16+ (BX)+ (DI) (SI) 物理地址=(SS)×16+ (BP)+ (DI) 适用表格或数组处理,表格或数组首地址可存放在基址寄存器中。

8086指令集的操作码 -回复

8086指令集的操作码 -回复

8086指令集的操作码-回复【8086指令集的操作码】是专门为Intel 8086微处理器设计的一组指令。

Intel 8086微处理器是20位处理器,与许多后来的x86系列处理器兼容。

它是上世纪70年代末和80年代初广泛使用的一种微处理器,其指令集具有多样的功能,可以完成各种复杂的任务。

在本文中,我们将逐步探讨8086指令集的操作码,以便更好地了解它的功能和用法。

第一部分:引言和基本概述在本节中,我们将简要介绍8086指令集和操作码的基本概念。

8086指令集是一组二进制指令,通过这些指令可以执行各种操作,如算术运算、逻辑运算、数据传输和控制转移等。

每个指令都有一个唯一的操作码,用于识别和执行该指令。

我们还将简要介绍8086微处理器的体系结构和寻址模式。

8086是一种基于寄存器-寻址的微处理器,其中包含多个通用寄存器、指令指针寄存器和标志寄存器。

同时,它还支持不同的寻址模式,如直接寻址、寄存器间接寻址和基址寻址等。

第二部分:算术和逻辑运算在这一部分,我们将详细讨论一些用于算术和逻辑运算的8086指令的操作码。

这些指令可以执行加法、减法、乘法、除法、与运算、或运算、异或运算和移位运算等操作。

我们将执行以下操作码的示例:- ADD指令:用于执行加法操作,将两个操作数相加。

- SUB指令:用于执行减法操作,将第二个操作数从第一个操作数中减去。

- MUL和DIV指令:用于执行乘法和除法操作,分别将两个操作数相乘或相除。

- AND、OR和XOR指令:用于执行与、或和异或运算,将两个操作数进行按位运算。

- SHL和SHR指令:用于执行逻辑左移和逻辑右移操作,将操作数按指定位数进行移位。

我们将逐步演示每个指令的使用方式和操作结果,以便更好地理解这些指令在实际编程中的应用。

第三部分:数据传输和访存操作在本节中,我们将研究用于数据传输和访存操作的8086指令的操作码。

这些指令允许我们将数据从一个位置传输到另一个位置,以及将数据存储到内存中或从内存中加载数据。

8086汇编 机器指令

8086汇编 机器指令

8086汇编机器指令8086汇编是一种低级语言,它基于Intel 8086微处理器的指令集架构。

在计算机科学中,汇编语言是一种与机器语言密切相关的语言,它提供了一种将高级语言编写的程序转换为机器语言的方式。

8086汇编的机器指令是一组独特的二进制代码,它们被计算机硬件直接执行,从而实现各种功能。

下面是8086汇编的一些常见指令的相关参考内容:1. MOV指令(Move):用于将数据从一个位置复制到另一个位置。

例如:```MOV AX, BX ;将BX寄存器中的值复制到AX寄存器```2. ADD指令:用于将两个值相加并将结果存储在目标位置。

例如:```ADD AX, BX ;将AX寄存器和BX寄存器中的值相加,并将结果存储在AX寄存器```3. SUB指令(Subtract):用于将一个值从另一个值中减去并将结果存储在目标位置。

例如:```SUB AX, BX ;将BX寄存器的值从AX寄存器的值中减去,并将结果存储在AX寄存器```4. CMP指令(Compare):用于比较两个值,并根据比较结果设置标志位。

例如:```CMP AX, BX ;比较AX寄存器和BX寄存器的值,根据比较结果设置标志位```5. JMP指令(Jump):用于无条件跳转到程序中的另一个位置。

例如:```JMP label ;跳转到标签为"label"的位置```6. JE指令(Jump if Equal):用于在相等条件下跳转到程序中的另一个位置。

例如:```JE label ;如果上一次比较为真,则跳转到标签为"label"的位置```7. JNE指令(Jump if Not Equal):用于在不相等条件下跳转到程序中的另一个位置。

例如:```JNE label ;如果上一次比较为假,则跳转到标签为"label"的位置```8. LOOP指令:用于循环执行一段代码块。

8086汇编指令大全

8086汇编指令大全

8086汇编指令大全标志寄存器: 9个有效位,分6个状态寄存器和3个控制寄存器CF 当执行一个加法(减法)使最高位产生进位(借位)时CF=1 否则CF=0PF 指令执行的结果低8位有偶数个一时,CF=1 否则CF=0AF 当执行一个加法(减法)使运算结果低4位向高4位有进位(借位)时AF=1 否则 AF+0ZF 当前运算结果为零,ZF=1 否则ZF=0SF 符号标志位OF 溢出标志位DF 方向标志位IF 中断允许位 IF=1时响应外部中断TF 跟踪标志位操作数:[目的操作数(OPD),源操作数(OPS)] ;立即操作数,寄存器操作数,存储器操作数。

寻址方式:1) 寄存器寻址例: INC AX; MOV AX,BX2) 寄存器间接寻址(寄存器只能是BX,DI,SI,BP);[PA=(BX、DI、SI)+DS》4)或BP+SS》4]3) 寄存器相对寻址4) 基址变址寻址5) 相对基址变址寻址6) 直接寻址7) 立即数寻址i. 立即数寻址立即数寻址不能用在单操作数指令中ii. 在双操作数中,立即数寻址方式不能用于目的操作数字段指令系统:1) 数据传送指令 mov注意:不允许在两个存储单元之间直接传送数据不允许在两个段寄存器之间传送数据不允许用立即数直接为段寄存器赋值不影响标志位不允许寄存器或存储单元到除CS外的段寄存器2) 入栈(出栈)指令PUSH(POP)注意:PUSH操作数不能是“立即数”POP操作数不能是段寄存器CS 不影响标志位先进后出单操作符3) 交换指令XCHG注意:只允许寄存器与存储单元之间的交换不影响标志位4) 换码指令 XLAT5) 地址传送指令LEA(load effective address):偏移地址()6) 数据段指针送寄存器LDS :低地址的字送指定的通用寄存器(SI)、高地址的字送DS7) 附加段指针送寄存器指令LES :与LDS相似,低地址的字送通用寄存器(DI)、高地址送ES上三指令不影响标志位8) 标志寄存器传送指令LAHF :标志寄存器低八位送AHSAHF :AH送标志寄存器低八位PUSHF:标志寄存器压入堆栈POPF :栈顶内容送标志寄存器9) 加法指令 ADD目的操作数只能是寄存器或存储单元对CF,OF,SF,PF,ZF,AF有影响10) 加1指令 INC对OF,SF,PF,ZF,AF有影响11) 带位加法指令 ADC在进行单精度运算时用ADD指令,在高精度低位运算时用ADD、高位用ADCOPD=OPD+OPS+CF12) 减法指令 SUB对CF,OF,SF,PF,ZF,AF有影响13) 带借位减法指令 SBBOPD=OPD—OPS—CF对CF,OF,SF,PF,ZF,AF有影响对CF,OF,SF,PF,ZF,AF有影响14) 减1指令 DEC15) 比较指令 CMP16) 求补指令 NEG17) 无符号乘法指令 MUL字节操作:AX=AL*OPS字操作:DX,AX=AX*OPS18) 有符号乘法指令 IMUL19) 无符号除法指令 DIV字节的操作:AL=AX/(OPS)的商AH=AX/(OPS)的余数字的操作:20) 有符号除法 IDIV21) 字节转换为字指令 CBW把AL中的符号位扩展到AH中,如果AL的最高位为0,则AH=00H,如果最高位为1,则AH=FFH22) 字转换为双字指令 CWD23) 压缩的BCD码调整指令DAA 加法的十进制调整指令DAS 减法的十进制调整指令24) 非压缩的BCD码调整指令AAA 加法的ASCII调整指令AAS 减法的ASCII调整指令AAM 乘法的ASCII调整指令AAD 除法的ASCII调整指令25) 逻辑与运算指令ADDORNOTTEST(OPD和OPS的内容不变)26) 移位指令逻辑左移与算术左移SHL、SAL(低位补0)算术右移 SAR(高位不变、CF为最后移入的值)逻辑右移 SHR(高位补0、CF为最后移入的值)27) 循环移位左移 ROL (CF为最后移入的值)右移 ROR (CF为最后移入的值)带进位循环左移 RCL(CF+OPD 一起左循环)带进位循环右移 RCR(OPD+CF 一起右循环)28) 无条件转移指令下JMPJMP SHORT OPD(IP=IP+8位位移量)JMP NEAR PTR OPD(IP=IP+16位位移量)上二条指令目的地址是IP=OPD+IPJMP WORD PTR OPD(IP=EA)JMP FAR PTR OPD(IP=OPD的段内偏移地址 CS=OPD段地址)JMP DWORD PTR OPD(IP=EA CS=EA+2)29) 条件转移指令JZ(JE)结果为0则转移(ZF=1)JNZ(JNE)结果不为0则转移(ZF=0)JS 结果为负则转移(SF=1)JNS 结果为正则转移(SF=0)JO 溢出则转移(OF=1)JNO 不溢出则转移(OF=0)JP(JPE)奇偶位为1则转移(PF=1)JNP(JPO)奇偶位不为1则转移(PF=0)JC(JNAE,JB)低于且不等于或进位位为1则转移(CF=1)JNC(JNE,JNB)高于或等于或进位位为0则转移(CF=0)30)。

微机原理

微机原理
• 有效地址由基址寄存器(BX或BP)的内容加上变 址寄存器(SI或DI)的内容构成: 有效地址=BX/BP+SI/DI • 基址寄存器和变址寄存器默认的段寄存器不同, 一般以基址寄存器决定段寄存器。 • 段地址对应BX基址寄存器默认是DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变。
MOV AX, [BX+SI] MOV AX, [BX][SI] MOV AX, [BP+SI]
MOV AX, BX
;AX←BX
微机原理
§ 4.2.3 存储器寻址方式
存储器段的分配: 在对存储器进行操作时,内存一般可分成4个段,分别称为代码段
、数据段、堆栈段和附加数据段,每个段存放不同性质的数据,进
行不同的操作。 代码段:存放指令。
数据段:存放程序所使用的数据。
堆栈段:程序的堆栈区(子程序调用、系统功能调用、中断处 理等操作使用,是按“先进后出”原则访问的特殊存储区域)或作 为临时数据存储区。 附加数据段:辅助的数据区。 4个逻辑段的段基址分别放在相应的代码段寄存器CS、数据段 寄存器DS、堆栈段寄存器SS和附加段寄存器ES中,由这4个段寄存 器来指明每个段在内存中的起始地址。
, 标号: 指令助记符 操作数 ;注释
(1) 标号是给该指令所在地址取的名字,必须后跟冒号 (“:”),它可以缺省,是可供选择的标识符。规则: – 标识符由字母(a~z,A~Z)、数字(0~9)或某些特殊 字符(@,-,?)组成。 – 第一个字符必须是字母(a~z,A~Z)或某些特殊的符 号(@,-,?),但“?”不能单独作标识符。
MOV AX, [SI+06H] MOV AX, 06H[SI]
微机原理
;AX←DS:[SI+06H] ;AX←DS:[SI+06H]

微机原理8086汇编语言程序设计

微机原理8086汇编语言程序设计

;这是一个乘10子程序
;使用寄存器AX
;入口:AX,出口:AX
proc far
push bx
;保护现场
pushf
add ax,ax
;2ax

mov bx,ax
;2ax ?bx

add ax,ax
;4ax

add ax,ax
;8ax

add ax,bx
;10ax

popf
;恢复现场
pop bx
ret
endp
第四章 8086汇编语言程序设计
? 几个概念 ? 8086汇编语言的语句 ? 8086汇编中的伪指令 ? 8086汇编中的运算符 ? 汇编语言程序设计 ? 宏定义与宏调用 ? 系统调用
几个概念
? 汇编语言 ? 汇编语言源程序 ? 汇编 ? 汇编程序
4.1 8086汇编语言的语句
汇编语言由指令性语句和指令性语句组成 ? 一、指令性语句格式
CODE SEGMENT
;定义代码段
ASSUME DS:DATA , CS: CODE
START: MOV AX , DATA
;初始化DS
MOV DS , AX
……
MOV AX , 4C00H ;返回DOS
INT 21H
CODE ENDS
;代码段结束
END START
;源程序结束
;段属性说明
? 特点 ? 程序分段 ? 语句由指令性和指示性语句组成 ? 两种程序框架
? 3、 ORG伪指令、地址计数器 $
ORG伪指令格式: ORG <表达式>
? 4、END 表示源代码结束 格式为: END 常数或表达式.

8086指令的基本格式

8086指令的基本格式

8086指令的基本格式一、概述在计算机科学领域中,指令是计算机执行操作的基本单位。

8086指令集是Intel 于1978年推出的一种16位微处理器指令集,被广泛应用于个人电脑和其他嵌入式系统中。

本文将详细介绍8086指令的基本格式及其组成部分。

二、8086指令的组成8086指令由若干个字节组成,每个字节代表一个特定的操作码或操作数。

根据指令的功能和操作数的个数,8086指令可以分为不同的类型,包括数据传输指令、算术运算指令、逻辑运算指令、控制转移指令等。

三、8086指令的基本格式8086指令的基本格式包括操作码、操作数和标志位。

下面将对每个部分进行详细介绍。

1. 操作码操作码是指令的关键部分,用于指定要执行的操作类型。

8086指令的操作码通常由一个或多个字节组成,不同的操作码代表不同的指令功能。

例如,MOV指令用于数据传输,ADD指令用于算术运算。

2. 操作数操作数是指令的操作对象,用于指定要操作的数据。

8086指令的操作数可以是寄存器、内存地址或立即数。

寄存器是8086处理器内部的存储单元,用于存储和操作数据。

内存地址指的是存储器中的某个位置,可以通过地址来访问其中的数据。

立即数是指令中直接给出的常数值。

3. 标志位标志位是用于记录处理器状态和指令执行结果的标志位。

8086处理器有多个标志位,包括进位标志、零标志、符号标志等。

这些标志位可以通过特定的指令来设置或清除,并在指令执行过程中进行判断和使用。

四、8086指令的执行过程8086指令的执行过程可以分为取指令、译码、执行和写回等阶段。

1.取指令阶段:处理器从内存中读取下一条指令,并将其存储在指令寄存器中。

2.译码阶段:处理器对取出的指令进行解码,确定要执行的操作类型和操作数。

3.执行阶段:处理器根据指令的操作类型和操作数执行相应的操作,如数据传输、算术运算等。

4.写回阶段:处理器将执行结果写回到寄存器或内存中,更新标志位。

五、8086指令的示例下面将通过示例来说明8086指令的基本格式和使用方法。

8086指令系统课件

8086指令系统课件
根据操作数个数的不同指令格式分为以下几种:
第3页,共175页。
第四章 8086 指令系统
(1)零操作数指令
格式:
操作码
即指令中只有操作码,没有操作数,也称为无操作数指 令。有两种情况使用这种指令:
一是指令中不需要任何操作数,如空操作指令、停机指令 等;
二是指令的操作数是默认,如加法的ASCII码 调整、 十进制BCD调整指令等。
不同的指令系统。
第2页,共175页。
第四章 8086 指令系统
4.1.2 汇编指令格式
一条指令一般包含操作码和操作数两部分。
操作码用来表示该指令所要完成的操作,不同的指令用
不同的操作码表示;
操作数用来描述指令的操作对象,操作数可以是立即数、
寄存器和存储器的地址,不同的指令可以有一个、 二个、三个 或无操作数。
第14页,共175页。
第四章 8086 指令系统
6.基址变址寻址( Based Indexed Addressing)
操作数的有效地址为基址寄存器(BX或BP)和变址 寄存器(SI或DI)的内容之和。
物理地址=16(段寄存器)+(基址寄存器)+ (变址寄存器)
【例4.7】 MOV AX,[BX][DI]
=30000H+1000H+2000H+250H=33250H
第16页,共175页。
第四章 8086 指令系统
4.2.2 与程序转移有关的寻址方式
指令在顺序执行时,下一条指令的地址总是由指令指针IP 自动递增得到。
若程序非顺序执行,将要执行的指令的地址如何得 到呢? 又分为段内转移和段间转移:
段内转移:需要给出即将执行的那条指令的偏移地址,并用 它取代IP的原有内容;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1) PUSH 5588H
2) MOV 数;
错误,操作数不能用立即数;
错误,MOV指令不能对段寄存器直接传送立即
DS, 1720H
3) ADD AX, CL 错误,寄存器长度不匹配;
4) AND AX,[DX] 错误,DX不用于存储器寻址。
3.解:AX*5 = AX*4+AX MOV BX, AX MOV CL, 2 SAL AX, CL ADD AX, BX ADD AX, 14 SAR AX, 1
答 : 8086 CPU包含AX、BX、CX、DX、SI、DI、SP、BP共8个通用寄 存器。其中AX主要用在字的乘、除法,输入/输出指令中;BX主要在寄 存器间接寻址和XLAT指令中作基址寄存器使用;CX主要在串操作指令和 LOOP指令中作计数器使用;DX主要在字的乘除法指令和输入/输出指令 中使用;SI主要在字符串操作指令中作源变址寄存器使用;DI主要在字 符串操作指令中作目的变址寄存器使用;SP主要在堆栈操作中作堆栈指 针使用;BP主要在寄存器间接寻址中作基址指针使用 。
3.8086 CPU的标志寄存器有几个状态标志位?几个控制标志位?它们各 自的含义和作用是什么? 答:8086 CPU的标志寄存器有6个状态标志位,有3个控制标志位。 其中CF进位标志位主要用来反映运算结果是否产生进位或借位,如果运 算结果的最高位向前产生了一个进位(加法)或借位(减法),则其值 为1,否则其值为0;PF奇偶标志位用于反映运算结果中低8位含有―1‖的 个数的奇偶性,如果―1‖的个数为偶数,则PF的值为1,否则为0;AF辅助 进位标志位表示加法或减法运算结果中D3位向D4位产生进位或借位的情 况,有进位(借位)时AF=1;无进位(借位)时AF=0;ZF零标志位用 来反映运算结果是否为0,如果运算结果为0,则其值为1,否则其值为0; SF用来反映运算结果的符号位,当运算结果为负数时,SF的值为1,否 则其值为0;OF溢出标志位用于反映带符号数运算所得结果是否溢出, 如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值 被置为是否响应CPU外部的可屏蔽中断发出的 中断请求,当IF=1时,CPU响应;当IF=0时,CPU不响应。DF方向标志 位用来控制串操作指令中地址指针的变化方向。在串操作指令中,当DF =0时,地址指针为自动增量,即由低地址向高地址变化;当DF=1时, 地址指针自动减量,即由高地址向低地址变化。TF追踪标志位被置为1时, CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。
PF——奇偶标志位,PF=1(低八位中含有偶数个1时),PF=0(奇数个)
(AL)=0D2H,(BL)= 86H,CF= 0,OF=0,PF= 1。
2. 解 : 存储器某单元的地址表示为2314H:4132H,则它的偏移地址= (4132),物理地址=(27272H)。 三、解答题 1. 解:(SP)=0060H – 5*2 =0060H -000AH = 0056H 2.解:
6.下列哪个寄存器是属于指针寄存器()
A.SI B.DX C.SP D.ES
7.指令JMP FAR PTR DONE属于( ) A.段内转移直接寻址 C.段间转移直接寻址 8.下列叙述正确的是( ) A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用 CMPS指令 B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用 CMP指令 B.段内转移间接寻址 D.段
3) ADD AX, CL
4) AND AX,[DX] 3.试编写一程序片段,不使用乘除法指令,实现((AX)*5+14)/ 2的功 能。
4.假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H, (BX)=0100H,(BP)=0010H,数据段中变量名VAL的偏移地址为0050H, 试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?
THANKS
第六组:杨欣悦 赵敏敏 张悦彬
3.8086/8088系统执行传送指令MOV时()
A.不影响标志位
C.影响SF符号标志
B.影响DF方向标志
D.影响CF进位标志
4.关于8086/8088微机系列,下列说法哪个是正确的() A.一个存储单元由16个二进制位组成,简称字 B.当存储一个字数据时,低字节放高地址位,高字节放低地址位。 C.在内存空间中,可以无限分配段,且段的大小不受限制。 D.段与段之间可以邻接,也可以重叠。 5.下列标志位中,可以用来判断计算结果正负的是() A.PF B.SF C.DF D.OF
PA=20110H PA=20150H
(11)MOV AX, [BX][SI] BX和SI寄存器基址变址寻址方式; PA=201A0H (12)MOV AX, 式; PA=201F0H VAL[BX][SI] BX和SI寄存器相对基址变址寻址方
1. 8086 CPU共有哪些16位寄存器?其中哪些16位寄存器可分为二个8位 寄存器来使用? 答 : 8086 CPU共有AX、BX、CX、DX、SI、DI、SP、BP、IP、 FLAGS、CS、DS、ES、SS共14个16位的寄存器。其中AX、BX、CX、 DX可分为二个8位寄存器来使用。 2. 简述8086 CPU各通用寄存器的主要功能?
10.条件转移指令JNE的测试条件为( ) A.ZF=0 B.CF=0 C.ZF=1 D.CF=1
11.某存储单元的物理地址是12345H,可以作为它的段地址有() A.2345H B.12345H
C.12340H
D.1234H
1.MOV AL,4CH MOV BL,86H ADD AL,BL 执行上述程序片段后,(AL)=?,(BL)= ?,CF= ?,OF=?,PF= ?。
2.存储器某单元的地址表示为2314H:4132H,则它的偏移地址= ? ,物 理地址=?。
1. 假设当前(SP)=0060H,连续执行5条PUSH指令后,(SP)=? 2.每小题列出了一条指令,判断该指令有无语法错误,如果存在语法错误, 请指出具体的错误原因。 1) PUSH 5588H 2) MOV DS, 1720H
C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用 JGE/JNL指令
D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用 JAE/JNB指令
9.在下列指令的表示中,不正确的是( ) A.MOV AL,[BX+SI] C.DEC [BX] B.JMP SHORT DONI D.MUL CL
1) MOV AX, 0ABH
(3) MOV AX, [100H] (5) MOV AX, [BX] (7) MOV AX, [BP]
(2) MOV AX, BX
(4) MOV AX, VAL (6) MOV AX, ES:[BX] (8) MOV AX, [SI] (10) MOV AX, VAL[BX]
(9) MOV AX, [BX+10]
(11) MOV AX, [BX][SI]
(12) MOV AX, VAL[BX][SI]
一、选择题 1.B 10.A 2.A 11.D 3.A 4.D 5.B 6.C 7.C 8.C 9.C
二、填空题 1.解: 可以参考书上P40: CF——进位标志位,CF=1(最高位发生进位或借位) OF——溢出标志位,OF=1(溢出),OF=0(未溢出)
4.答: (1)MOV AX, 0ABH 立即方式; (2)MOV AX, BX 寄存器寻址方式; (3)MOV AX, [100H] 直接寻址方式; (4)MOV AX, VAL 直接寻址方式; 操作数在本条指令中 操作数为 (BX)=0100H PA=20100H PA=20050H PA=20100H
(5)MOV AX, [BX] BX寄存器间接寻址方式;
(6)MOV AX, ES:[BX] 附加段BX寄存器间接寻址方式; PA=21100H
(7)MOV AX, [BP] BP寄存器间接寻址方式;
(8)MOV AX, [SI] SI寄存器间接寻址方式;
PA=15010H
PA=200A0H
(9)MOV AX, [BX+10] BX寄存器相对寻址方式; (10)MOV AX, VAL[BX] BX寄存器相对寻址方式;
-------复习题
1.寻址指令MOV CX, [BX + DI + 20]使用的是哪一种寻址方式() A.寄存器寻址 C.变址寻址 B.相对基址变址寻址 D.基址变址寻址
2.若AX= - 15要得到AX=15应执行的指令是() A.NEG AX C.INC AX B.NOT AX D.DEC AX
相关文档
最新文档