| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 汇编语言(8086)前11章学习笔记 -> 正文阅读 |
|
[嵌入式]汇编语言(8086)前11章学习笔记 |
目录段地址*16+偏移地址=物理地址 寄存器CS:存放指令段地址 IP: 存放指令偏移地址 DS:存放数据段地址,是除IP默认段寄存器 ES:附加段寄存器 AX(AL,AH),BX, CX,DX SI,DI:与BX功能相近,但无法分成两个8位寄存器使用 SS:存放栈的段地址 SP:存放栈的偏移地址,指向栈保存的最新数据 BP:存放栈的偏移地址,用于如指向函数数据,搭配SS使用 FLAG:标志寄存器 flag 标志寄存器(标志)ZF:位于flag第6位,零标志位,记录上一运算结果是否为0,结果为0则保存1,反之保存0 PF: 位于第2位,奇偶标志位,记录上一运算结果中1的个数是否为偶数,1的个数为偶数则保存1,反之保存0 SF:位于第7位,符号标志位,记录上一运算结果是否为负,如果是负数则保存1,反之保存0 CF:位于第0位,进位标志位,记录上一运算结果数据是否出现进位或借位,如出现则保存1,反之保存0 OF:位于第11位,溢出标志位,记录上一运算结果数据是否出现溢出,如出现则保存1,反之保存0 DF:位于第10位,方向标志位,与movsb,movsw指令相关,df=0,si di++,df=1,si di-- 指令mov例: mov word ptr ds:[0],1 遵循无歧义原则 mov byte ptr ds:[0],1 mov ax,bx mov ax,[bx+1] 不可对段地址直接mov,可用其他寄存器间接 可用到操作符 PTR [指令] [word/byte] ptr [操作] OFFSET s:mov ax, offset s 将s标号的偏移地址存入ax ADDSUBINC/DEC 自增/自减AND/OR 与/或MUL 乘两数必须都是8位或16位 8位时,一个默认在al,16位时,一个默认在ax。 结果:8位默认存在ax,16位时默认高位在dx,低位在ax 例:mul byte ptr ds:[0] DIV 除除数:8位/16位 被除数:默认存放在ax或dx和ax,除数8位时,被除数16位,默认ax,除数16位时,被除数32位,高位dx,低位ax, 结果:除数8位时,al存放商,ah存放余数,除数位16时,ax存放商,dx存放余数 例:div byte ptr ds:[0] LOOP 循环cx作为循环次数依据,每次开始自动dec cx,cx为0时则跳出 单层循环: s:[代码段] loop s ; 跳转到标号为 s 的代码上继续执行 多层(嵌套)循环: 由于loop共用cx作判断 可使用栈在循环前push cx来保存 JUMP 跳转jump标号 jump short 标号 段内短转移,只改变ip,偏移偏移地址8位,范围-128~127 jump near ptr 标号 段内近转移,只改变ip,偏移偏移地址16位,范围-32768-32767 jump far ptr 标号 段间/远转移,改变cs和ip jump地址 jump word ptr 内存单元地址(段内 例:jmp word ptr ds:[0] jmp word ptr [bx] jump dword ptr 内存单元地址(段间 高处为段,低处为偏移 jump 寄存器 JCXZ 条件转移指令当cx=0,转移。只有短转移 例:jcxz short s PUSH/POP 压入/弹出push/pop 寄存器 push/pop 地址 db dw dd(伪指令db 定义字节大小 dw 定义字大小 dd 定义双字大小 例: db 1,2,3,4 DUP (伪指令[db/dw/dp] [需要生成的数量] dup ([值],..) 例:dw 3 dup (0) 同 dw 0,0,0 CALL/RET 函数调用通过call ret实现函数效果 call标号 作用类似 push ip jmp near ptr 标号 call far ptr 标号 作用类似 push cs push ip jmp far ptr 标号 call 寄存器 call 地址(类比jump ret 作用类似 pop ip pop cs jmp cs:ip adc 带进位加法指令(与标志寄存器相关abc ax,bx 相当于 ax=ax+bx+CF sbb 借位减法指令sbb ax,bx 相当于ax=ax-bx-CF cmp 比较指令cmp ax,bx 即 sub ax,bx,但不保存值却影响标志寄存器 如: 当ax==bx zf=1 当ax!=bx zf=0 当ax<bx 产生借位cf=1 当ax>=bx cf=0 je jne jb jnb ja jnap226 movsb将ds:si指向内容的字节放到es:di 若df=0,sidi++,若df=1,sidi-- movsw同movsb,但传送大小为字 通常和rep搭配 rep movsw相当于 s:movsw loop s 用于存放大量数据 pushf/popf将标志寄存器的值压入栈与将栈中数据弹出到标志寄存器 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 12:28:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |