没有合适的资源?快使用搜索试试~ 我知道了~
初次学习(汇编语言)这本书的一部分笔记,不是很全,不过对初学者来说应该可以起到一定的帮助效果,如果是具体学习汇编语言的话还是建议大家找找相关书籍。
资源推荐
资源详情
资源评论
(内存地址空间分布情况)
目的:充分获得底层编程的体验,深刻理解机器运行程序的机理。
方法:循序渐进
问题: 机是什么?指令和程序是一样的吗?为什么向地址为
内存单元中写入数据没用?
:控制整个计算机的运作并进行运算,需要指令和数据,是一种微处理器。
因为这相当于改写只读存储器中的内容。 单元是 储存器中的一个单元。
寄存器: 中可以存储数据的器件。
第一章 基础知识(外部总线)
汇编课程的研究重点:如何利用硬件系统的汇编结构和指令集有效灵活地控制系统进
行工作。
硬件系统结构:
机器语言:机器指令(一台机器可以正确执行的命令)的集合。
汇编语言的主体是汇编指令。
编译器:程序员汇编指令编译器机器码计算机(执行)
汇编语言组成:
汇编指令(可译为机器指令, 执行),伪指令(编译器执行),其他符号。
存储器:存放指令(程序)和数据( 可以直接使用,二进制形式),相当于内存。
(磁盘≠内存)
数据和指令:在内存中没区别。
存储单元:由存储器划分成,编号:。(存储单元在存储器中的地址)
电子计算机的最小信息单位是 , 个 一个 (一个字节)。
微型存储器的存储单元可存放一个字节,容量以字节为最小单位来计算。
(按二进制转化)
对存储器(外部器件:芯片)的读写:
确定存储单元的地址(地址信息)
器件的选择,读或写的命令(控制信息)
读或写的数据(数据信息)
总线:地址线,控制线,数据线
地址总线: 通过地址总线对存储单元进行寻址。
的地址总线次方(范围:)存储单元数内存地址空间大小。
一个 有 根地址线这个 的地址总线宽度为 。
数据总线的宽度决定了 和外界的数据传送速度。
例如: 根数据总线一次可传送一个字节:(一个 位二进制数)。
控制总线的宽度决定了 对外部机器的控制能力。
内存地址空间( 在此读写数据)由若干个存储单元组成的逻辑存储器
主板(上的东西):存储器,外围芯片组,扩展插槽( 内存条和各类接口卡)通
过总线与 连接。
通过总线向接口卡发送命令,接口卡通过 的命令控制外设(显示器,打印机
等)进行工作。
各类存储器芯片:
随机存储器( ):易失性,可读可写。
主随机存储器:装在主板和扩展插槽上。
接口卡上的 :对大批量输入,输出数据进行暂时储存。
例如:显示卡上的 称为显存。显示卡随时将显存中的数据向显示器上输出。
只读存储器():永久保存。
装有 !"(基本输入输出系统)的 :
!" 是由主板和各类接口卡厂商提供的软件系统,可以通过它使该硬件设备进行最基
本的输入输出。
用来储存 !"。
例如:显卡上的 中存储着显卡的 !"。
系统 !" 是主板上的 !"。
第二章 寄存器( 的工作原理)
问题:#$ 位寄存器中所能存储的数据的最大值是多少?#(数量):
##(#)$#()
段地址的大小怎么算?后面的数减去前面的数%
在 中:运算器进行信息处理,寄存器进行信息储存,控制器控制各种机器进行操
作,内部总线连接各种器件,在它们之间进行数据传送。
在 中,程序员能够用指令读写的部分只有寄存器,通过改变各种寄存器中的内容
实现对 的控制。
通用寄存器:存放一般性的数据。
# 有 个寄存器,# 位,通用寄存器: & $ '&$'&$'
(&($('(&高$'&低)
字在寄存器中的存储:
字:一个字由两个字节(高位字节和低位字节)组成。
一个字可以存放在一个 # 位的寄存器中:一个字型数据(十进制)$两个独立的字节
型数据(十六进制)。
计算机中的数据大多是由 个 位数据构成。
几条汇编指令:)
*+,-..
例如:*+,-)):将寄存器 ) 中的数据送入寄存器 -),-))() 中的值不
变)
-..-):将寄存器 -) 中的值加上 ,-)-)%
-..-/0:-/ 中的数据为 ,%0,因为 -/ 为 位二进制数,只
能存放两位 # 进制数,所以 要舍弃。
注意&-..-/01-..-)0(-) 为 # 位寄存器,可以进位到 -2)
两个指令的操作对象的位数要是一样的。
例如:
*+,-/-)
-..-/#
是错的。
物理地址:内存单元的唯一地址。
访问内存单元时,必须向内存提供内存单元的物理地址。
# 位机构的 :能够一次性处理、传输、暂时存储的信息的最大长度是 # 位。
# 给出物理地址的方法:
地址加法:物理地址段地址3#%偏移地址(段地址3#:基础地址$起始地址)
一个 进制的数据左移 位(%),相当于乘以 。
段地址3# 必然是 # 的倍数,所以一个段的起始地址一定是 # 的倍数。
偏移地址为 # 位,# 位地址的寻址能力为 #(# 个不同取值),所以一个段
的长度最大为 #。(段的长度由偏移地址可以取得
值规定)
可以用不同的段地址和偏移地址形成同一个物理地址。
将地址连续、起始地址为 # 的倍数的一组内存单元定义为一个段。
4数据在 5# 内存单元中”:数据存在内存的 段中的 5# 单元中。
段寄存器:提供内存单元的段地址。
#:("("""6"
" 和 !&
# 机中,任意时刻, 将 "&! 指向的内容当作指令执行。
" 为代码段寄存器,! 为指令指针寄存器。
内存中存放着机器码,机器码对应汇编指令。
# 工作过程:
从 "&! 指向的内存单元读取指令,读取的指令进入指令缓冲器。
!!%所读取指令的长度,从而指向下一条指令。
执行指令。转到步骤 ,重复。
# 复位: 刚开始工作。
修改 "、!:通过修改 "、! 中的内容来控制 执行的指令。
大部分寄存器用 *+,(传送)指令改变。
修改 "、!:转移指令:7*8 指令。
47*8段地址("):偏移地址(!) ”:7*86&执行后:"6
!
47*8某一合法寄存器”:
执行前:"!-)-
指令 7*8-)执行:"!-
代码段:存放代码的段。
将一组内存单元定义为一个段,可以将长度为 (9#)的一组代码,存在一组地
址连续、起始地址为 # 的倍数的内存单元中。
实验:查看 和内存,用机器指令和汇编指令编程:
(:;:("、<=.+>? 提供的实模式(# 方式)程序的调试工具。使用它,
可以查看 各种寄存器中的内容、内存情况和在机器
码级跟踪程序的运行。
(:; 指令:
&查看、改变 寄存器的内容。(@%6=@:查看$@某一寄存器:修改)
(&查看内存中的内容。
(.段地址:偏移地址:可以查看从指定地址开始的 个内存单元的内容$.段地
址:起始偏移地址 结尾偏移地址:查看范围)
6&改写内存中的内容。
(起始地址 数据:修改一列$起始地址:数据%空格键:修改某个)
(起始地址 数据 A字母A:字符$起始地址 数据 “B%%$!C:字符串)我把它们
写到内存中,要知道 "!! 码与字母的转化
关系。
机器码是数据,十六进制的两个数为一字节。
&将内存中的机器指令翻译成汇编指令。(:起始地址)查看汇编指令
&执行一条机器指令。()
&以汇编指令的格式在内存中写入一条机器指令。(-起始地址$-:从预设地址开
始)
"!! 码机器码(内存),机器码组成机器指令,机器指令对应汇编指令。
# 进制计数:D
内存地址为 : 开始的为显存,是 ,可以改变其值来在屏幕中显示。
其中一个字符占两个字节,前一个(低)为字符的 "!! 码,后一个(高)为要显示
的颜色。
内存 : 和 : 这两个字节对应着屏幕中的第一个字符的位置,依次类推,
每个屏幕的行有 个字符,对应的内存占 # 个字
节。
提问:从 :E 中共有 # 个字节是什么意思?
每个屏幕的行有 个字符,对应的内存占 # 个字节是什么意思?
剩余27页未读,继续阅读
资源评论
qq_33604407
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功