汇编基础
来源:互联网 发布:易达工程造价软件 编辑:程序博客网 时间:2024/05/01 09:06
8086寄存器
8086 CPU 中寄存器总共为 14 个,且均为 16 位
通用寄存器:
AX,BX,CX,DX 称作为数据寄存器:
- AX (Accumulator):累加寄存器,也称之为累加器;
- BX (Base):基地址寄存器;
- CX (Count):计数器寄存器;
- DX (Data):数据寄存器
AX 寄存器可以分为两个独立的 8 位的 AH 和 AL 寄存器;
BX 寄存器可以分为两个独立的 8 位的 BH 和 BL 寄存器;
CX 寄存器可以分为两个独立的 8 位的 CH 和 CL 寄存器;
DX 寄存器可以分为两个独立的 8 位的 DH 和 DL 寄存器;
SP 和 BP 又称作为指针寄存器:
- SP (Stack Pointer):堆栈指针寄存器;
- BP (Base Pointer):基指针寄存器;
SI 和 DI 又称作为变址寄存器:
- SI (Source Index):源变址寄存器;
- DI (Destination Index):目的变址寄存器;
控制寄存器:
- IP (Instruction Pointer):指令指针寄存器;
- FLAG:标志寄存器;
段寄存器:
* CS (Code Segment):代码段寄存器;
* DS (Data Segment):数据段寄存器;
* SS (Stack Segment):堆栈段寄存器;
* ES (Extra Segment):附加段寄存器;
8086寻址方式
一条指令 包括 操作码和操作数
操作码:表示指令执行什么操作,如mov,add,sub等等
操作数:参加操作的数或数的存放地址(寄存器,各种地址表示格式)
寻找操作数存放的地址称为寻址方式(也可以数,用什么存储了操作数的地址)
一、立即寻址方式 MOV AL,06H
二、寄存器寻址方式 MOV BX,AX
三、直接寻址方式
MOV BX, DS:[2000H]操作数存放在存储器中, 偏移量直接写在操作数中,.地址为数据段寄存器DS的值* 16 (<<4)然后加上直接给出的偏移量2000H.
- 四、寄存器间接寻址方式
操作数存放在存储器中, 16位偏移地址存放在SI, DI, BP, BX四个寄存器之一中.若使用BX, SI, DI之一作为寄存器, 操作数默认放在DS所决定的数据段中.即地址为:DS *16 + BX示例:MOV AX, [SI] ; 将DS*16 + SI中的值放入AX中若使用BP做间接寻址, 操作数默认放在SS决定的堆栈段中.示例:MOV AX, [BP] ;将SS*16 + BP中的值放入AX中可以直接指定使用的段寄存器:MOV AX, SS:[SI] ;将SS*16 + SI中的值放入AX中
- 五、寄存器相对寻址方式
操作数存放在存储器中, 使用段寄存器内容* 16 加SI, DI, BP, BX四个寄存器之一的内容再加直接给出的位移量.若使用BX, SI, DI之一作为寄存器, 操作数默认放在DS所决定的数据段中; 若使用BP做间接寻址, 操作数默认放在SS决定的堆栈段中.与寄存器间接寻址相比只是增加了直接给出的偏移量:示例:MOV AX, [SI-2] ; 将 DS*16 + SI - 2中的值放入AX中MOV AX, [BP+4] ;将 SS*16 + BP + 4中的值放入AX中MOV AX, SS:[SI-8] ;将 SS*16 + SI - 8中的值放入AX中
- 六、基址变址寻址方式
将段地址寄存器的值*16加上基址寄存器(BX,BP)之一的地址加上变址寄存器(SI, DI)之一的值作为地址.若使用BX作基址 操作数默认放在DS所决定的数据段中; 若使用BP做基址, 操作数默认放在SS决定的堆栈段中.示例:MOV AX, [BX][SI] ; 将 DS*16 +BX + SI中的值放入AX中MOV AX, [BP][DI] ;将 SS*16 + BP + DI 中的值放入AX中MOV AX SS:[Bx][SI] ;将 SS*16 + BX + SI 中的值放入AX中
- 七、相对基址变址寻址方式
在基址变址寻址基础上再加一个直接给出的偏移量:示例:MOV AX, 1234H[BX][DI] ;将DS * 16 + BX + DI + 1234H中的值放入AX中.还有几种表示方法与上式等价:MOV AX, [BX+DI+1234H]MOV AX, 1234H[BX+DI]MOV AX, 1234H[BX][DI]
参考
http://www.cnblogs.com/Finley/p/5573477.html
汇编语言基础
伪指令
http://blog.csdn.net/grow_mature/article/details/8535586
.section指示把代码划分成若干个段(Section),程序被操作系统加载执行时,每个段被加载到不同的地址,操作系统对不同的页面设置不同的读、写、执行权限。
.data段保存程序的数据,是可读可写的,相当于C程序的全局变量。
.text段保存代码,是只读和可执行的
BIOS中断
http://blog.csdn.net/jxfgh/article/details/5521861
中断服务
中断服务的功能号
- 输出字符,汇编代码1
DATAS SEGMENT ;此处输入数据段代码DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS ; data段装入DS MOV DS,AX mov bh, 0 ;第xx页 mov dh, 2 ;第xxx行 mov dl, 10 ;第xx列 mov ah, 2 ; int 10h,2号功能(设置光标位置) int 10h MOV bl, 2CH ;绿底红色的字符 mov al, 'a' ; ASCII字符 mov cx, 02H ;显示的数量 mov ah, 09H ; int 10h,9号功能(显示字符) int 10H MOV AH,4CH ;返回DOS,一般用于汇编程序的结束 INT 21HCODES ENDS END START
- 输出字符串,汇编2
DATAS SEGMENT ;此处输入数据段代码 msg db 'hello world', 0DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS ; data段装入DS MOV DS,AX ; 设置初始的光标位置,此后每输出一个字符,光标往右移 mov bh, 0 ;第xx页 mov dh, 2 ;第xxx行 mov dl, 10 ;第xx列 mov ah, 2 ; int 10h,2号功能(设置光标位置) int 10h mov bx,offset msg ;字符串首偏移地址放到bx中 ;lea SI,msgnext: mov al, [bx] ;[DS*16 + bx] 寄存器相对寻址 cmp al, 0 jz exit push bx ; 利用栈暂存bx mov cx, 1 mov bl, 1EH ;蓝色背景、黄色字符. mov ah, 09H ; int 10h,9号功能(显示) int 10H inc dx ; 光标(dx, dl)加 mov ah, 2 int 10h pop bx ; 弹出栈里面的bx,恢复数据 inc bx jmp nextexit: MOV AH,4CH ;返回DOS,一般用于汇编程序的结束 INT 21HCODES ENDS END START
汇编代码3
DATAS SEGMENT ;此处输入数据段代码 msg db 'hello world','$' msg2 db '--abc--','$' DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS ; data段装入DS MOV DS,AX ;DS:msg 是字符串的首地址 mov dx,offset msg ; int 21的9号功能,显示字符串 mov ah, 09H int 21h mov dx,offset msg2 mov ah, 09H int 21h MOV AH,4CH ;返回DOS,一般用于汇编程序的结束 INT 21HCODES ENDS END START
- 汇编学习--汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础的基础
- 汇编基础-栈基础
- 汇编基础--cmp汇编指令
- 汇编基础--CMP汇编指令
- 【GDOI2018模拟7.8】质数 乱搞+哥德巴赫猜想
- (2)泛型
- linux套件安装过程中configure,make,make install的作用
- Android中关于Toast的使用体会
- MediaRecorder关于录制视频文件大小和录制时长的设置
- 汇编基础
- 第3章DOM详解(属性操作)
- vue-router单页应用简单示例
- flashsim源码阅读7-8(2)
- 方向梯度直方图(HOG,Histogram of Gradient)
- select服务器
- react
- JavaScript事件添加的兼容性写法
- HTML学习笔记(Day3)