【汇编语言实战】(一)、第一次实验敲出的代码与常用指令解释(汇编语言第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的某几个单元中,请找到这个日期并改变它。

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

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

👻👻👻我亲手拍的樱花

请添加图片描述

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪&

感谢您的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值