IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 【汇编语言实战】(一)、第一次实验敲出的代码与常用指令解释(汇编语言第4版,王爽,超详细笔记) -> 正文阅读

[嵌入式]【汇编语言实战】(一)、第一次实验敲出的代码与常用指令解释(汇编语言第4版,王爽,超详细笔记)

🌵🌵🌵前言

?你好啊,我是“ 怪& ”,是一名在校大学生哦。
🌍主页链接:怪&的个人博客主页
??博文主更方向为:课程学习知识、作业题解、期末备考。随着专业的深入会越来越广哦…一起期待。
??一个“不想让我曾没有做好的也成为你的遗憾”的博主。
💪很高兴与你相遇,一起加油!

🌞🌞🌞一、预备知识

🍠1、CS与IP

(1)、概念

CS和IP是8086CPU两个最关键的寄存器,它们指示了CPU当前要读取指令的地址。

  • CS:代码段寄存器
  • IP:指令指针寄存器

在8086PC机中,任意时刻,设CS中的内容为M,IP中的内容为N,8086CPU将从内存M*16+N单元开始,读取一条指令并执行。

(2)、表示方法

常用:CS:IP
例如:FFFFH:0000H,CPU将从FFFF*16H+0000H即FFFF0H处读取指令。
注:FFFF0H单元中的指令是8086PC机开机后执行的第一条指令。(8086CPU加电启动或复位,都会被设置为CS=FFFFH,IP=0000H)

🌳2、修改CS与IP的指令

注:汇编语言的语句是不区分大小写的

(1)、mov指令,也被称为传送指令,用于修改大部分寄存器的值
  • 公式:mov 寄存器名称,要设置的值
  • 令AX=111:mov ax,111 ???????其他寄存器的值同理。
    注:mov不可用于设置CS与IP的值
(2)、jmp,修改CS与IP的指令之一
?a、同时修改CS与IP
  • 公式:jmp 段地址:偏移地址,即jmp CS,IP
  • 令CS=2AE3H,IP=0003H:jmp 2AE3,3
?b、仅修改IP
  • 公式:jmp 某一合法寄存器
  • 例如:ax=1000H,CS=2000H,IP=0003H ???执行:jmp ax ???执行结果:ax=1000H,CS=2000H,IP=1000H
  • jmp ax 在作用上可以理解为:mov IP,ax(把ax存的值赋给IP)

3、add

  • 公式:add ax,合法寄存器或者值
  • 例如1:将ax加12H:add ax,0012H
  • 例如2:将ax加上ax:add ax,ax

🌻🌻🌻二、代码作用及示意图

🌲1、进入debug页面(tips:按下Alt+Enter即可全屏)

注:输入位置前的-是上一行回车自动生成的。请添加图片描述

📢2、查看操作

(1)、查看CPU寄存器的内容:

-r
请添加图片描述
红色所指向的是:CS、IP
黄色所画线的是:当前CS:IP所指向内存单元所存放的机器码。
蓝色所划线的是:该机器码所对应的汇编指令

(2)、查看内存中的内容:

-d 段地址:偏移地址
例如:查看内存10000H处的内容:-d 1000:0
呈现结果分析:

  • 其呈现从指定地址开始的128个内存单元的内容
  • 最左一列是每一行的起始地址
  • 右边矩形是每个内存单元中数据对应的可显示的ASCII码字符,不可显示以“.”代替。
  • 格外注意:每行由0开始到F,即 0 1 2 3 4 5 6 7 8 9 A B C D E F(共16位)请添加图片描述
  • 查看指定范围内存中的内容:-d 段地址:起始偏移地址 结尾偏移地址
  • 例如:查看1000:0到1000:9即-d 1000:0 9

📣3、修改操作

(1)、修改寄存器中的内容:

输入-r 寄存器名称回车,在:后输入“修改后的数据”再回车即可。
改完后可以再用-r查看请添加图片描述

(2)、暴力修改内存中的内容:

-e 起始地址 数据 数据 数据······(改几个数据就写几个)
可以用-e命令写入:数值,字符串(记得字符串带双引号"")
请添加图片描述

(3)、以命令提问的方式改内存中的内容:

-e 段地址:偏移地址+Enter(回车)+光标在“.”后

  • 1、若修改此位置的值,则输入数据,然后后空格
  • 2、若不修改此处的值,直接按空格键至下一处
  • 希望改写的内存单元改写完毕后,按Enter(回车)结束e命令。
    注:小数点前是未修改的值。以及只要是按了空格键,即表示处理完成
    请添加图片描述

🔥4、写入、查看、执行机器码(e、u、t)

E命令向内存中写入机器码,用U命令查看内存中机器码的含义,用T命令执行内存中的机器码。

(1)、查看内存中机器码的含义

-u 段地址:偏移地址

  • 蓝色箭头所指:指令的地址
  • 红色箭头所指:此处所存的机器指令
  • 黄色箭头所指:对应的汇编指令
    请添加图片描述
(2)、执行内存中的机器码

-t
注:指令执行后,ax被改写为1,IP变为IP+3(mov ax,0001的指令长度为3),CS:IP指向下一条指令。
请添加图片描述

🍅5、以汇编指令的形式在内存中写入机器指令

-a 段地址:偏移地址
输入指令后回车,输入空+回车结束。
请添加图片描述

🌟🌟🌟三、实战题目

🍀1、将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。

mov ax,1
add ax,ax
jmp 2000:0003

输入指令,一直-t,记住次数即可。
请添加图片描述

🌍2、查看内存中的内容

PC机主板上的ROM中写有一个生产日期,在内存FFF0H到FFFFFH的某几个单元中,请找到这个日期并改变它。

  • 我找到了,修改留给你们了。
    请添加图片描述

??????忙碌的敲代码也不要忘了浪漫鸭!

👻👻👻我亲手拍的樱花

请添加图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 23:22:24  更:2022-04-06 23:24:42 
 
开发: 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 4:38:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码