用汇编语言 8086体系结构
时间: 2023-07-11 10:03:05 浏览: 53
8086是一种基于x86指令集架构的微处理器,使用汇编语言编写程序时需要了解它的体系结构。下面是一些基本的8086汇编语言语法和指令:
1. 语法
在8086汇编语言中,每条指令都由两部分组成:操作码和操作数。操作码指定要执行的操作,操作数指定操作的数据。
指令的一般形式如下:
```
<操作码> <目的操作数>, <源操作数>
```
其中,`<操作码>`是指定要执行的操作的代码,`<目的操作数>`是指定要操作的目标数据,`<源操作数>`是指定要操作的源数据。
2. 寄存器
8086有14个通用寄存器,可以用来存储数据。这些寄存器分为两类:
- 数据寄存器:AX、BX、CX、DX
- 指针寄存器:SP、BP、SI、DI
另外,还有一些特殊寄存器:
- IP:指令指针寄存器,用于存储下一条要执行的指令的地址。
- FLAGS:标志寄存器,用于存储指令执行后的结果状态。
3. 段寄存器
8086使用段寄存器来访问内存。段寄存器的值与段地址相乘得到实际的内存地址。8086有4个段寄存器:
- CS:代码段寄存器,存储代码段的地址。
- DS:数据段寄存器,存储数据段的地址。
- SS:堆栈段寄存器,存储堆栈段的地址。
- ES:附加段寄存器,可用于存储其他数据段的地址。
4. 指令
8086有大量的指令,这里只介绍一些常用的指令:
- MOV:用于将数据从一个位置复制到另一个位置。
- ADD/SUB:用于对数据进行加/减运算。
- INC/DEC:用于对数据进行自增/自减操作。
- CMP:用于比较两个数据的大小。
- JMP:无条件跳转指令。
- JE/JNE/JZ/JNZ:条件跳转指令,根据指定的条件进行跳转。
- INT:用于触发中断。
- PUSH/POP:用于对堆栈进行压入/弹出操作。
下面是一个简单的8086汇编语言程序,实现将两个数相加并输出结果:
```
; 8086汇编语言程序
.model small
.stack 100h
.data
num1 dw 1234h
num2 dw 5678h
result dw ?
.code
main proc
mov ax, @data
mov ds, ax
mov ax, num1
add ax, num2
mov result, ax
mov ah, 09h
mov dx, offset message
int 21h
mov ax, result
call print_hex
mov ah, 4ch
int 21h
main endp
print_hex proc near
push bx
push cx
push dx
mov bx, ax
mov cx, 4h
loop1:
rol bx, 4h
mov dl, bl
and dl, 0fh
cmp dl, 9
jle skip
add dl, 7
skip:
add dl, 30h
mov ah, 02h
int 21h
loop loop1
pop dx
pop cx
pop bx
ret
print_hex endp
message db 'Result is: $'
end main
```
这个程序使用了MOV、ADD、INT、PUSH、POP等指令,实现了将两个数相加并输出结果的功能。