8086cpu汇编语言(王爽第三版1-8章总结)

小编 2026-06-16 阅读:386 评论:0
8086cpu汇编语言(王爽第三版1-8章总结) 一、基础知识 1、汇编语言的组成:汇编指令(机器码的助记符)、伪指令、其他符号 2、计算机中连接CPU和其他芯片的导线成为总线,总线从逻辑上分...

8086cpu汇编语言(王爽第三版1-8章总结)

一、基础知识
1、汇编语言的组成:汇编指令(机器码的助记符)、伪指令、其他符号
2、计算机中连接CPU和其他芯片的导线成为总线,总线从逻辑上分为三类:地址总线、控制总线、数据总线
地址总线:寻址能力(一个CPU有N个地址总线,那么这个cpu最多可以寻找2的N次方个内存单元)
数据总线:数据总线的宽度决定了cpu和外界的数据传送速度
控制总线:决定CPU对外部器件的控制能力
3、每一种CPU都有自己的汇编指令集

二、寄存器
1、不同的CPU寄存器个数和结构不同。8086有14个寄存器,都是16位,可以存放两个字节
2、通用寄存器 AX、BX、CX、DX(为保证兼容,均可分为两个独立的8位寄存器使用,AL、AH)
3、8086cpu给出物理地址的方法:段地址x16+偏移地址
4、段寄存器 CS、DS、SS 、ES
5、CS和IP: cs为代码段寄存器,ip为指令指针寄存器【任何时刻,CUP将CSx16+ip指向的内容当做指令执行】 jmp 段地址:偏移地址(修改cs:ip) jmp 寄存器(修改ip)
6、Debug常用指令:

		R:查看或改变寄存器内容
		D:查看内存中的内容
		E: 改写内存中的内容
		U:将内存中的机械指令翻译成汇编指令
		T: 执行一条指令
		A:在内存中写入汇编指令

三、内存访问
1、DS和【address】:存放数据 ds:【bx】(均能识别) ds:【1】(masm无法识别) ds:【0】均能识别
2、mov、add、sub 转移:mov ax,1000H (ax)=1000H 加:add ax,ax (ax)=2000H 减: sub ax,ax (ax)=0
3、栈:先进后出 push入栈,pop出栈 (8086CPU入栈和出栈以字为单位进行) push ax push bx pop bx pop ax (通常用来暂时保存数据)
4、SS:SP:任意时刻,ss:sp始终指向栈顶元素(空栈时,ss:sp指向最底部字单元偏移地址+2)

四、程序的编译和运行
1、

asssume cs:codesg    
			 	   codesg segment
			  start:mov ax,0123H
					...
					...
					
					mov ax,4c00H    ;程序返回
					int 21h
					
					codesg ends   ;codesg结束
					
					end start    ;指明程序入口【end 汇编程序的入口】

2、masm使用: 注意:!debug 默认十六进制 masm默认十进制 debug中:mov ax,1000和 mov ax,1000h 等价 , masm中: mov ax,1000和mov ax,3e8h等价
编译:masm 路径;
连接:link 路径;

3、单步调试: debug 路径.exe 【程序加载后,ds:0为程序内存区 ,前256个字节为PSP区(psp段地址SA),SA+ 10h:0 是程序的物理地址 】
-t 单步执行,显示寄存器信息
-p 执行最后的int 21h 指令

五、循环
1、ds:【1】masm会误认为是ds:1 ,所以引入bx , mov bx,1 ds:【bx】
2、loop循环:
mov cx,循环次数
s:循环体
loop s
//每次执行loop:(cx)=(cx)-1, 判断cx值,为0向下执行,不为0继续循环
3、段前缀:
【bx】的默认段寄存器是ds ,也可以显示的指明段地址,cs:【bx】,es:【bx】
4、安全的内存空间:
0:200-0:2ff (256个字节)

六、包含多个段的程序
1、db:定义字节型数据,dw:定义字型数据,dd:定义双字型数据
2、数据段、代码段与栈段:

assume cs:codesg,ds:datasg,ss:stack   ;定义代码段,数据段和栈段
				
			datasg segment	;数据段开始
				db ...
			data ends			;数据段结束
				
			stack segment  ;栈段开始
			  dw ...
			stack ends		;栈段结束
			
			code segment  ;代码段开始
start:
			...
			mov ax,4c00h	;程序返回
			int 21h	
			code ends     ;代码段结束
			
			end start ;指明程序入口

七、更灵活的定位地址内存的方法
1、and、or : 1and1=1 1and0=0 1or0=1
2、大小写转化问题:小写字母第五位为1,大写字母为0
小转大:and 11011111B
大转小:or 00100000B
3、bx+idata: 如 bx+1,bx+200
常用格式: 【bx+100 】、100【bx】、【bx】.100
4、bx+si、bx+di
一般情况下: si指向原始偏移地址,di指向目标偏移地址
【si、di和bx功能一样,但si和di不能分成两个8位寄存器使用】

八、数据处理的两个基本问题【在什么地方?有多长?】
1、reg和sreg: reg寄存器:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di
sreg段寄存器:ds,ss,cs,es
2、bp:【bp】如果没有显示的给出段地址,默认为ss ,而其他,【bx】,【si】,【di】,【0】默认都为ds
3、在什么地方?
执行指令前,所处理的数据可以放在三个地方: cpu内部、内存、端口
4、8086cpu寻址方式:

				直接寻址:【idata】
				寄存器间接寻址:【bx】、【si】、【di】、【bp】
				寄存器相对寻址:【bx+idata】、【si+idata】、【di+idata】、【bp+idata】
				基址变址寻址:【bx+si】、【bx+di】、【bp+si】、【bp+di】
				相对基址变址寻址:【bx+si+idata】、【bx+di+idata】、【bp+si+idata】、【bp+di+idata】

5、有多长?
8086可以处理byte或word型数据
(1)、通用寄存器指明 mov bx,ds:[0] 字 mov bl,ds:[0]字节
(2)、word ptr 和 byte ptr显示指明 mov word ptr ds:[0],1 字 mov byte ptr ds:[0]字节
(3)、默认:栈push和pop只进行字操作
6、div除法指令:div除数
div reg或div 内存单元
除数:8位或16位 被除数:如果除数是8位,被除数为16位,如果除数是16位,被除数为32位,dx放高16位,ax放低16位
结果:如果除数位8位,al放商,ah放余数;他如果除数为16位,ax放商,dx放余数
【注意!!!无符号16位最大数为65535,8位最大数为255】
mov ax,1000h
mov bx,10h
div bx ;计算ax/bx,bx为除数
7、dup:和db、dw、dd配合使用,进行数据的重复 db 3 dup (0) 等价于 db 0,0,0

小白刚学汇编语言!随手总结

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表