汇编第一讲 汇编简介

一.什么是汇编

  汇编语言他是计算机语言,计算机语言通俗点说就是人类和计算机(也就是CPU)沟通的桥梁,计算机不认识人类的语言,只认得二进制(0和1)但是我们想让你算计完成我们的工作,每次都是0,和1,那样会崩溃的,(老一辈的是这样的)所以后面汇编语言出现了,用一些简单的助记符来替代机器语言(二进制)通用的语言,比如 + - * / 这种助记符,

add....汇编语言是和机器语言一一对应的.

二.汇编语言有什么用处好处

    1.学好汇编了,你可以理解计算机更为透彻

    2.学好汇编,可以增加自己的调试能力

    3.学好汇编,你可以反汇编,做一些反病毒,等等一系列的工作.

三丶语言发展史

机器语言 ->汇编语言 -> C语言 -> C++语言等等

四丶汇编语言主要操作什么

汇编语言主要操作的是寄存器

在CPU中,有八个通用寄存器

ax (add,代表相加,累加的意思)累加寄存器

bx (base,代表基地址,存放地址的寄存器) 基址寄存器

cx (count,个数,代表统计的意思)计数寄存器

dx (data,数据) 数据寄存器

SI (source) 源寄存器,存放源地址的内容的寄存器

DI (Dest) 目标寄存器,从源寄存器中memcpy到目标寄存器中

BP (base Point) 堆栈,理解为栈底指针,每次在栈中移动数据,出栈进栈,都会更新.记录的是当前的栈底

SP () 堆栈栈顶指针.

指令寄存器,以及四个段寄存器

指令寄存器,标志寄存器,以及四个段寄存器.

IP ,和段寄存器CS一起使用,记录的是偏移(至于怎么使用,会在下一讲讲清楚) 指明了CPU要执行的那条指令

IP是和CS一起使用,用来确定销一条指令的物理地址

Flag 标志寄存器, 存放各种标志的.

五丶WindowsXp下的简单Debug调试工具的简单使用

 我们编写汇编程序,一般用debug

使用方法,

1. win + R 打开运行窗口输入cmd,在cmd中输入Debug命令

2. 直接开始菜单中 选择右边的运行窗口,输入cmd,然后在cmd输入debug命令

一丶debug中常见的指令

a 汇编,代表我们可以开始汇编了. (把汇编代码转换为机器码)

u 反汇编,(把机器代码变为汇编代码)

  如果你有一个写到文件的机器码文件,可以当做debug的参数传入,然后u,就可以显示文件中汇编代码了,把机器代码反汇编成了汇编代码了

t 单步不如(在vc++6.0中,相当于F11键)

r 寄存器 (相当于vc++6.0中的F10键,)可以修改寄存器的内容,比如 r cx 然后回车,输入值,然后输入p往下执行即可查看.

g 断点执行(也就是vc中的F5执行)

D 部分数据显示 (可以显示一段内存中的数据)

n 文件名 (本地创建一个文件, 例如n hello ,不用加双引号包裹)

e 指定地址写入,可以指定地址写入一段数据

w 把汇编代码写入到文件(文件是由n指令创建的)

等等这些是常用的,具体的debug指令会放到云盘中大家下载:

链接:http://pan.baidu.com/s/1kVDWzHl 密码:adew

二丶使用debug截图分享

1.运行CMD,输入debug命令

2.输入a,开始汇编

mov ax,1 的意思是把 1赋值给ax

ret 的指令就是(return 返回的意思)你写的汇编程序也要返回否则就出错

3.输入p指令调试查看一下

4.利用r指令,修改寄存器的值,写入到文件,注意写入到文件必须写入字节大小,字节大大小就是cx寄存器中存储(cx 计数寄存器)

5.查看是否更改,p指令查看

6.n指令,在本地目录创建一个文件

7.w指令,将我们的代码写入到文件

8.利用winhex查看本地文件

其中B8 代表指令MOV

01 00 代表16位寄存器AX里面的值

C3 代表ret返回

9.将文件,反汇编为汇编代码,当做debug的参数

六丶使用debug调试工具(也可以调试,亦可以当做编辑器)显示helloword指令

1.如果显示helloworld,咱们需要一个指令字典,在上面的下载链接中提供了.

指令字典的看法

1.主页面

2.点击汇编语言,选择8086

3.选择下面的功能号

上面说了,ah是高把位,我们要显示字符串,需要给这个ah赋值为09 (具体系统调用(也就是API调用显示hello下一讲详细讲解))

然后dx寄存器我们需要给定一个字符串, (e 指令指定地址 e 108 "hello$" 即可)

调用的时候,用int 21 指令调用(内部会查表,具体怎么样,下一讲细讲)

4.使用debug显示一个helloworld

第一个指令  -e 140 mov "helloworld$" 代表我们给140地址写入一个字符串, 可以用d指令查看  d 140 回车就会显示

第二个指令 a,表示我们开始汇编

按照上面的指令字典,我们知道,dx寄存器需要是字符串的首地址, 所以利用mov 指令,把140给dx了

然后因为调用函数(也就是系统调用) ah 我们需要给9,代表调用那一项

然后int 21 代表系统调用的意思,也就是说(调用函数,开始调用函数)

然后显示了

转载于:https://www.cnblogs.com/wangsicongde/p/7576833.html

16位汇编第一讲简介相关推荐

  1. c语言将两个16位变为一个32位,16位汇编第六讲汇编指令详解第第三讲(示例代码)...

    16位汇编第六讲汇编指令详解第第三讲 1.十进制调整指令 1. 十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果 2.分成压缩BCD码和非压缩BCD码调整 简而言之: 以前的时 ...

  2. 16位汇编语言第二讲系统调用原理,以及各个寄存器详解

    16位汇编语言第二讲系统调用原理,以及各个寄存器详解 昨天已将简单的写了一下汇编代码,并且执行了第一个显示到屏幕的helloworld 问题? helloworld怎么显示出来了. 一丶显卡,显存的概 ...

  3. 64位内核第一讲,和32位内核的区别

    64位内核第一讲,和32位内核的区别 双击调试配置请查看 连接: https://www.cnblogs.com/aliflycoris/p/5877323.html 一丶编译的区别. 首先,还是使用 ...

  4. 16位汇编相关寄存器

    文章目录 1 寄存器的组成部分 1.1 8086寄存器组成 1.2 8086处理器是小端模式 2 X86 16位汇编所涉及的寄存器 3 寄存器的用法 3.1 DS和ES 3.2 CS和IP 1 寄存器 ...

  5. 小谈16位汇编NEG求补指令

    16位汇编,看到别人写的3行代码对一个32位数求补,举例子论证 NEG是求补指令,把他之后的操作数求补(先求反再加1) 本指令影响标志位CF.OF.SF.PF.ZF及AF. 有一个32位的数 高16位 ...

  6. 研究16位汇编NEG求补指令

    转自: http://bbs.pediy.com/showthread.php?t=81209 [文章标题]: 研究16位汇编NEG求补指令  [文章作者]:  hzmslx 我是个菜鸟··学16位汇 ...

  7. 手把手教你在64位Win7下部署16位汇编学习环境

    实现方式是VirtualBox虚拟机+精简的32位xp系统.指导小白用,高手就直接跳过吧. 一.背景 初学者学习汇编语言通常是从16位汇编开始,但是现在的64位Win7系统明确表示不支持16位的程序. ...

  8. 16位汇编第第四讲常用的7种寻址方式

    常用的7中寻址方式 昨天稍微讲了一下,立即数寻址,今天继续讲解寻址方式. (注意,这个属于简陋版的,写了4个小时的博客,也就是第一版,保存了一下,但是博客出问题了,重新打开后发现保存的内容没了,让我很 ...

  9. 【汇编语言】16位汇编总结

    16位汇编语言 学习操作系统前对汇编语言进行快速学习,参考汇编语言进行总结. Before Learning 进制: 字节和字: 字节,即Byte,是由八个位组成的一个单元,也就是8个bit组成1个B ...

  10. 16位汇编 int 10h和int 21h 显示字符串实例

    int 10h 的9号功能是显示字符串 assume cs:codecode segmentstart:mov ah,2 ;置光标mov bh,0 ;第0页mov dh,1 ;dh中放行号mov dl ...

最新文章

  1. Android 通过网页打开自己的APP(scheme)
  2. 360题带你走进深度学习!吴恩达深度学习课程测试题中英对照版发布
  3. 社交重构、游戏革新,万物皆可元宇宙?这场大会给你讲清楚了|活动预告
  4. 网易云信荣登「2020中国ToB行业年度先锋力榜」!
  5. python partition函数_在Python中相当于R的createDataPartition
  6. Quartz简单实例
  7. 清明节游戏服务器维护,清明节游戏活动【4月2日--4月16日】
  8. [leetcode]Palindrome Number @ Python
  9. openSearch支持mysql版本_OpenSearch 使用二三事-阿里云开发者社区
  10. [ZJOI2007]仓库建设
  11. unity 动画 音频播放
  12. HP惠普服务器驱动下载地址
  13. resin服务器搭建
  14. 异数OS 织梦师-纤手(二)-- LPC RPC篇
  15. 论文笔记:EPNet: Enhancing Point Features with Image Semantics for 3D Object Detection
  16. 十进制转32位二进制(Java)
  17. 为什么可积不一定可导_函数可积、原函数存在、变上限函数的关系解读(绝对原创)...
  18. 这些前端资源,你值得拥有
  19. Local Storage和Session Storage详解
  20. 双十一十周年以后 电商行业这些未来趋势和机会不容错过

热门文章

  1. mysql insert duplicate key update
  2. 有朋自远方来——阿里软件专家作客武汉博文
  3. 智能优化算法(源码)-生物地理学算法(Biogeography-Based Optimization,BBO)
  4. OpenCV获取图像的高和宽(Iplimage)
  5. 课程设计哈夫曼编/译码系统
  6. (bfs)广度优先 实现图的遍历
  7. 地图Web服务API接口——搜索POI(以高德地图为例)
  8. Flutter动画系列之SizeTransition
  9. Flutter之CupertinoSwitch和Switch开关组件的简单使用
  10. OkHttp之ConnectInterceptor简单分析