博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
汇编学习总结1---7 章(王爽教程)
阅读量:4961 次
发布时间:2019-06-12

本文共 2134 字,大约阅读时间需要 7 分钟。

汇编语言

第一章

①字 占16位  字节 占8位  1kb=1024byte(字节)  1byte=8bit(位)

②cpu 中,指令和数据都是二进制形式存在 磁盘的数据 CPU无法直接使用,只能读到内存中,才能被使用

③cpu在数据读写时,必须和外部芯片进行3类信息交换:

  1、地址信息  地址总线

  2、控制信息 控制总线

  3、数据信息 数据总线

④存储器:随机存储器RAM 只读存储器ROM

  1、随机存储器:断电后数据消失,如内存,显存

  2、只读存储器:关机后内存不消失,如主板,网卡的BIOS

⑤8086CPU的内存地址分配:

  00000—9FFFF为主存储器

  A0000—BFFFF为显存地址空间

  C0000—FFFFF为各类ROM地址空间 

第二章

①CPU主要有运算器,控制器,寄存器,三部分组成

②8086通用寄存器: AX BX CX DX

③简单的汇编指令:mov add sub

  例:mov ax,18  add ax ,ax 

④8086共有20位地址总线,即可传送20位数据,寻址能力为2的20次方个字节 即1MB

 但8086为16位CPU结构,每次处理16位

 所以 物理地址=段地址*16+偏移地址 (ds:bx  cs:ip)

第三章

①DS寄存器用来存储访问数据的段地址    BX通用寄存器用来存放访问数据的偏移地址

②栈的定义:先进后出  入栈push 出栈pop 

 CPU是通过段寄存器SS和寄存器SP来确定栈的位置和栈顶的位置

 SP里面就是栈顶的地址,CPU执行就是SS:IP 处执行 注意入栈超界和出栈超界

③debug的使用:

  1、R命令查看、改变CPU寄存器的内容

  2、D命令查看内存中的内容

  3、E命令改写内存中的内容

  4、U命令将内存中的机器指令翻译成汇编指令

  5、T命令执行一条机器指令

  6、A命令以汇编指令的格式在内存中写入一条机器指令

第四章

①汇编语言编译执行过程 

  1、汇编指令的编写 建议工具UltaEdit

  2、修改文件格式为.asm格式文件

  3、用masm进行编译,得到目标文件.obj 以二进制形式存在

  4、用Link进行连接,得到.exe可执行文件

  5、加载即可执行(初期可用debug进行调试)

②程序结尾代码:

  mov ax,4c00H

  int 21H

③程序框架:

  assume cs:code 

  code segment   // 编码起始端

  ......

  code ends  //编码结束端

  end //编译器结束

 第五章

①[bx] 表示偏移地址   编译器(不认识 [0])和DEBUG的区别

②loop循环指令  用法结构:

  s:   //要循环标记

  loop s // cx 不为0  便进行循环

③debug中对loop循环的调试 引入 g 命令的用法:   g 0020:0  直接跳转地址   p 命令直接结束循环

④ffff:0—ffff:20 到 0020:0—0020:20 内存信息转移   充分理解指令信息

    

⑤一段安全的地址空间 00200h—002ffh的256个字节的地址

④段前缀:"ds","cs","ss","es"。

第六章

1、在代码段中使用数据 框架:

2、在代码段中使用栈 框架:

实现逆序存放数据,充分理解程序含义。

3、代码段、数据段、栈段  

 第七章

1、and 指令:逻辑与指令,按位进行与运算

  or指令:逻辑或指令,按位或进行或运算

2、ASCII码 理解 地址:https://baike.baidu.com/item/ASCII/309296?fr=aladdin&fromid=19660475&fromtitle=ascii%E7%A0%81%E8%A1%A8

3、以字符形式给出数据:   data segment

              dw 'unicode'

              data ends

4、汇编语言中大小写字母转化的问题 这个根据ASCII码 

  以大小写A为例  进行理解

在二进制中 大小写字母  仅仅在第五位有不同     大写字母第五位为0   小写字母第五位为1

(编程中可通过第五位进行与或运算进行大小写的转化:具体以代码为例进行思考)

在十六进制中   小写字母相差20H

5、si和di 寄存器的理解

和bx 寄存器功能相近, 但 不能分为两个八位寄存器   就是说si和di 是16位寄存器

 6、灵活的寻址:

  [bx]

  [bx+idata]

  [bx+si+idata]

  等等一些寻址  进行灵活运用  

  注意: 书写方式有很多具体一书为例

7、对栈的进一步理解: (这里是重点)

  数据暂存的使用 : 书中以嵌套循环进行讲解

  cx 表示循环计数器,在嵌套循环中内存循环要改变cx值会导致外层循环出错,此时要对外层循环进行数据的暂存

  即对cx进行入栈和出栈的操作

转载于:https://www.cnblogs.com/fishroom/p/7589149.html

你可能感兴趣的文章
Windows向Linux上传文件夹
查看>>
20180104-高级特性-Slice
查看>>
6个SQL Server 2005性能优化工具介绍
查看>>
nginx启动、关闭命令、重启nginx报错open() "/var/run/nginx/nginx.pid" failed
查看>>
BZOJ 3097 Hash Killer I
查看>>
UINavigationController的视图层理关系
查看>>
html阴影效果怎么做,css 内阴影怎么做
查看>>
宏观经济
查看>>
综合练习:词频统计
查看>>
BZOJ1026: [SCOI2009]windy数
查看>>
样板操作数
查看>>
64位UBUNTU下安装adobe reader后无法启动
查看>>
iTextSharp带中文转换出来的PDF文档显示乱码
查看>>
组件:slot插槽
查看>>
走进C++程序世界------异常处理
查看>>
Nginx配置文件nginx.conf中文详解(转)
查看>>
POJ 1988 Cube Stacking
查看>>
POJ 1308 Is It A Tree?(并查集)
查看>>
N进制到M进制的转换问题
查看>>
Android------三种监听OnTouchListener、OnLongClickListener同时实现即其中返回值true或者false的含义...
查看>>