Intel8086ASMCode汇编指令的机器码
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 8088指令系统所有指令的操作码的编码

实验二找出8086/8088指令系统所有指令的操作码的编码实验目的:本实验旨在利用debug工具的e和u功能找出8086/8088指令系统的指令格式中各种操作码编码对应的指令功能,得到8086/8088操作码从00~FF所对应的汇编指令名字。
附:本次实验用到的e和u功能的解释:debug的e命令、u命令的作用及用法:e 100...表示从100号单元开始编写内容;u 100 105表示将100~105号单元共6个字节反汇编出来、所谓“反汇编”就是把机器码还原成汇编语句。
每次先用e命令改写100号单元(从00到FF,第一次是00,第二次是 01,第三次是02,第四次是03,……,最后一次是FF),再用u命令反汇编出指令,再记录下来。
第一回合实验步骤:一、启动debug程序:鼠标单击“开始->程序->附件->命令提示符”,打开DOS(其实虚拟DOS)窗口,出现命令提示符Microsoft Windows XP [版本5.1.2600]<C>版权所有1985-2001 Microsoft Corp.输入debug并按回车键,出现一个debug程序的提示符,一个短杆如下图所示:二、用试探法-e 100 00 00 00 00 00 00-u 100 1051375:0100 0000 ADD [BX+SI],AL1375:0102 0000 ADD [BX+SI],AL1375:0104 0000 ADD [BX+SI],AL结论:操作码字节前六位为000000(二进制)看来是一条ADD指令,而且只占两个字节。
记下来:指令码汇编指令---------------------------------------------------------------------1375:0100 0000 ADD [BX+SI],AL分析:指令的第一字节为操作码,规定指令的操作类型。
第4章-8086汇编语言程序设计(1)汇编语言的语句-伪指令-运算符-DOS功能调用

注意:ASSUME只是告知汇编程序有关段寄存器与段的关系, 并没有给段寄存器赋予实际的初值。
ORG规定了段内的起始地址或偏移地址。 格式: ORG <表达式> 表达式的值即为段内的起始地址或偏移地址,从此地址起连续 存放程序或数据。
四、过程定义语句 格式:过程名 PROC [NEAR]或FAR ┇ RET ┇ 过程名 ENDP
例1: MOV AX,SEG STRI1 MOV DS,AX 将变量STRI1所在段值取到DS中
例2: MOV SI,OFFSET STRI1 代表将变量STRI1处的地址偏移量取到SI中.
注意:它与 LEA SI,STRI1类似。 TYPE,SIZE、LENGTH (不作要求).
#3
5. 类型操作符PTR
新存储器地址。
2. 逻辑运算符(不作要求) AND、OR、XOR、NOT,只能用于数字表达式中。
3. 关系运算符(不作要求) EQ(相等)、NE(不等)、LT(小于)、GT(大于)、 LE(小于或等于)、GE(大于或等于)
4. 分析操作符 SEG,OFFSET,TYPE,SIZE、LENGTH。可以把存储器 一些特征作为数值送回。
IMUL AL SUB AX,BX MOV D,AX MOV AH,4CH
INT 21H
CODE ENDS
END START
➢ 一个源程序通常由若干个段组成,每个段均以SEGMENT开 始,以ENDS结束。
➢ 每个段包含若干语句,分指令语句与伪指令语句两种。
➢ 每条语句可由标识符、保留字、表达式等元素组成。
DATA ENDS
STACK SEGMENT DB 20H DUP(?)
3.1-3.28086寻址方式与指令机器码

执行结果 BX=5678H,执行过程如图3.4。
中国科学技术大学
3.1 8086寻址方式
第3章 8086 指令系统
寄存器相对寻址
上述指令也可用MOV 式来表示。
BX,[COUNT+SI]这种形
中国科学技术大学
3.1 8086寻址方式
第3章 8086 指令系统
§3.1 8086的寻址方式
3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 立即数寻址方式 寄存器寻址方式 直接寻址方式 寄存器间接寻址方式 寄存器相对寻址方式 基址变址寻址方式 相对基址变址寻址方式 其它寻址方式
中国科学技术大学
3.1 8086寻址方式
第3章 8086 指令系统
§3.1 8086的寻址方式
3.1.1 立即数寻址方式 3.1.2 寄存器寻址方式 3.1.3 直接寻址方式 3.1.4 寄存器间接寻址方式 3.1.5 寄存器相对寻址方式 3.1.6 基址变址寻址方式 3.1.7 相对基址变址寻址方式 3.1.8 其它寻址方式
中国科学技术大学
3.1 8086寻址方式
第3章 8086 指令系统
3.1.6 基址变址寻址方式
Based Indexed Addressing
有效地址是一个基址寄存器 (BX 或 BP) 和一个变 址寄存器(SI或DI)的内容之和,两个寄存器均由 指令指定。
若基址寄存器为BX时,段址寄存器用DS,则: 物理地址 = 16×DS+BX+SI
约定 1:如果指令中指定的寄存器是 BX、 SI或 DI,则 默认操作数存放在数据段中,
物理地址=16×DS+BX 或=16×DS+SI 或=16×DS+DI
8086汇编和机器码的对应表

8086汇编和机器码的对应表
单⽚机指令功能⼀览表
助记符代码说明
MOV A,Rn E8~EF
寄存器A
MOV A,direct E5 dircet 直接字节送A
MOV A,@Ri ER~E7
间接RAM送A
MOV A,#data 74 data ⽴即数送A
MOV Rn,A F8~FF
A送寄存器
MOV Rn,dircet A8~AF dircet 直接字节送寄存器
MOV Rn,#data 78~7F data ⽴即数送寄存器
MOV dircet,A F5 dircet A送直接字节
MOV dircet,Rn 88~8F dircet 寄存器送直接字节
MOV dircet1,dircet2 85 dircet1 dircet2 直接字节送直接字节MOV dircet,@Ro 86~87
间接RAM送直接字节
MOV dircet,#data 75 dircet data ⽴即数送直接字节MOV @Ri,A F6~F7
A送间接RAM
MOV @Ri,#data 76~77 data 直接字节送间接RAM MOV @Ri,#data 76~77 data ⽴即数送间接RAM
MOV DPTR,#data16 90 data 15~8 16位常数送数据指针data7~0
MOVC A,@A+DPTR 93
由((A)+(DPTR))寻址的程序存贮
器字节选A
MOVC A,@A+PC 83
由((A)+(PC));寻址的程序存贮器字节送A
MOVX A,@Ri E2~E3
送外部数据(8位地址)送A
MOVX A,@DPTR E0
送外部数据(16位地址)送A。
8086汇编语言指令表(按字母顺序)

2. 示例: (AL)=18H,(BL)=06H
ADD AL,BL ; (AL)<--(AL)+(BL) ; (AL)=1EH
DAA ; (AL)
DAS
组合十进制减法调整指令 DAS(Decimal Adjust for Subtraction)
则(AL)<--(AL)-6,(AH)<--(AH)-1,CF<--AF,(AL)<--(AL) and 0FH,
否则(AL)<--(AL) and 0FH
ADC
带进位加法指令 ADC(Addition Carry)
格式: ADC OPRD1,OPRD2
功能: OPRD1<--OPRD1 + OPRD2 + CF
DAA
组合的十进制加法调整指令 DAA(Decimal Adjust for Addition)
格式: DAA
功能: 对AL中的两个组合进制数相加的结果进行调整,调整结果仍放在AL中,进位标志放在CF中.
说明:
1. 调整操作如下
(1) 若(AL) and 0FH>9 或 AF=1,则(AL)<--(AL)+6,AF<--1,对低四位的调整.
格式: DAS
功能: 对两个组合十进制数相减后存于AL中的结果进行调整,调整后产生一个组合的十进制数且仍存于AL中.
说明:
调整操作
若(AL) and 0FH > 9 或 AF=1,则(AL)<--(AL)-6,AF=1
若(AL) and 0F0H > 90H 或 CF=1,则(AL)<--(AL)-60,CF=1
Intel8086ASMCode汇编指令的机器码

Intel8086ASMCode汇编指令的机器码8086指令码汇总表8086指令有汇编语⾔指令和指令码两种形式,汇编语⾔指令形式经过汇编程序处理后⽣成指令码形式。
通过指令码形式可帮助理解汇编语⾔指令格式的含义和⽤法。
O、8086指令码格式0B/1B 1B或2B 0B/1B 0B/1B/2B/4B 0B/1B/2B/4B 指令前缀操作码段寻址⽅式段偏移量参数⽴即数参数说明:偏移量参数和⽴即数参数的有⽆由寻址⽅式段决定。
⼀、传送类指令MOV指令REG/MEM→/←REG 100010dw mod reg r/mIMME→REG/MEM 1000111w mod 000 r/m data data if w=1 IMME→REG 1011wreg data data if w=1MEM→AX 1010000w addr-low addr-highAX→MEM 1010001w addr-low addr-highREG/MEM→段REG 10001110 mod reg r/m 8E段REG→REG/MEM 10001100 mod reg r/m 8CPUSH指令REG/MEM 11111111 mod 110 r/m FFREG 01010reg段REG 000reg110POP指令REG/MEM 10001111 mod 000 r/m 8FREG 01011reg段REG 000reg111XCHG指令REG/MEM←→REG 1000011w mod reg r/mREG←→AX 10010regXLAT指令11010111 D7LEA指令10001101 mod reg r/m 8DLDS指令11000101 mod reg r/m C5LES指令11000100 mod reg r/m C4LAHF指令10011111 9FSAHF指令10011110 9EPUSHF指令10011100 9CPOPF指令10011101 9DIN指令直接寻址1110010w port间接寻址1110110wOUT指令直接寻址1110011w port间接寻址1110111wCBW指令10011000 98CWD指令10011001 99 说明:d—0/1表⽰REG为源/⽬的操作数;w—0/1表⽰操作数类型为BYTE/WORD;mod、r/m—寻址⽅式,参见教材P56~57;IMME—⽴即数操作数,字段中⽤data表⽰;reg—通⽤REG⽤3位编码,段REG只⽤2位编码(即为0xx)。
8086指令和机器码

W位说明传递数据的类型是字(W=l)还是字节(W=0);
D位标明数据传送的方向:D=0,数据从寄存器传出; D=1,数据传至寄存器;
5
§3-2 指令的机器码表示方法
其中,第二个字节:
REG字段:寄存器号,用3位编码寻址8种不同的寄存器,再根据第一字节中 W位,选择8位或16位寄存器。如表3-l所示。(对使用段寄存器的指令,REG字
011
100 101
[BP]+[DI]
[SI] [DI]
[BP]+[DI]+D8
[SI]+D8 [DI]+D8
[BP]+[DI]+D16
[SI]+D16 [DI]X
SP BP
110
111
D16(直接地址)
[BX]
[BP]+D8
[BX]+D8
[BP]+D16
[BX]+D16
DH
13
§3-2 指令的机器码表示方法
例:求指令MOV [BX+2100H], 0FA50H的机器码
14
§3-2 指令的机器码表示方法
5、包含段寄存器的指令的编码
例:求指令MOV DS, AX的机器码
解:指令的功能是将AX寄存器的内容传送到数据段寄存器DS。 该指令的编码格式为:10001110 MOD 0 REG R/M . 段寄存器DS的编码为11,即REG字段为11;另一个操作数也是 寄存器,所以MOD=11,而R/M字段应填上AX的三位代码000 .
3、双操作数指令
MOV AL, 04 ;机器码为B004H
4、三操作数指令
ADC AX, BX ;该指令完成操作数AX、BX和CF位相加。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8086指令码汇总表
8086指令有汇编语言指令和指令码两种形式,汇编语言指令形式经过汇编程序处理后生成指令码形式。
通过指令码形式可帮助理解汇编语言指令格式的含义和用法。
O、8086指令码格式
一、传送类指令
w—0/1表示操作数类型为BYTE/WORD;
mod、r/m—寻址方式,参见教材P56~57;
IMME—立即数操作数,字段中用data表示;
reg—通用REG用3位编码,段REG只用2位编码(即为0xx)。
二、算术运算类指令
REG/MEM-REG—MEM可为减数或被减数。
三、逻辑运算类指令
四、控制转移类指令
JAE/JNB—与JNC指令相同;
type—中断类型号。
五、串操作类指令
STOS,REPZ对应CMPS、SCAS(比较两者与5条指令配合时的有效性)。
六、处理器控制类指令。