汇编网首页登录博客注册
fpamc的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态

[2012-04-01 06:46] 第八章笔记

第八章 数据处理的两个基本问题
计算机是进行数据处理、运算的机器。
描述性符号:reg(寄存器)和sreg(段寄存器)
reg的集合包括:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、dl、sp、bp、si、di
sreg的集合包括:ds、ss、cs、es

在8086cpu中,只有这四个寄存器(bx、bp、si、di)可以用在“[…]”中来进行内存单元的寻址。
在“[…]”中,这四个寄存器可以单个出现,或只能以四种组合出现:bx和si、bx和di、bp和si、bp和di。
只要在“[…]”使用寄存器bp,而指令中没有显性地给出段地址,段地址就默认在ss中。

处理大致可分为3类:读取、写入、运算。
指令执行前一刻,它将要处理的数据所在的位置可以在三个地方:cpu内部、内存、端口。

汇编语言中用3个概念来表达数据的位置。
① 立即数(idata)
对于直接包含在机器指令中的数据(执行前在cpu的指令缓冲器中),在汇编语言中称为:立即数(idata),在汇编指令中直接给出。
② 寄存器
指令要处理的数据在寄存器中,在汇编指令中给出相应的寄存器名。
③ 段地址(SA)和偏移地址(EA)
指令要处理的数据在内存中,在汇编指令中可用[X]的格式给出EA,SA在某个段寄存器中。存放段地址的寄存器可以是默认的,也可以是显性给出的。

定位内存单元的方法一般被称为寻址方式。
包括:直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址。

指令进行的是字操作还是字节操作,汇编语言中用以下方法处理:
① 通过寄存器名指明要处理数据的尺寸。
② 在没有寄存器名存在的情况下,用操作符X ptr指明内存单元的长度,X在汇编指令中可以为word或byte。
在没有寄存器参与的内存单元访问指令中,用word ptr或byte ptr显性地指明所要访问的内存单元的长度是很必要的。
③ 其他方法
有些指令默认了访问的是字单元还是字节单元。譬如栈指令。

div指令是除法指令。格式有:div reg和div 内存单元。
使用div除法应注意的问题:
① 除数:有8位和16位两种,在一个reg或内存单元中。
② 被除数:默认放在ax或ax和dx中,如果除数为8位,被除数则为16位,默认在ax中存放;如果除数为16位,被除数则为32位,在dx和ax中存放,dx存放高16位,ax存放低16位。
③ 结果:如果除数为8位,则al存储除法操作的商,ah存储除法操作的余数;如果除数为16位,则ax存储除法操作的商,dx存储除法操作的余数。

伪指令dd。
dd是用来定义dword(double word,双字)型数据的。(联想db定义字节型数据,dw定义字型数据)

dup是一个操作符,它是和db、dw、dd等数据定义伪指令配合使用的,用来进行数据的重复。
dup使用格式如下:
db 重复的次数 dup (重复的字节型数据)
dw 重复的次数 dup (重复的字型数据)
dd 重复的次数 dup (重复的双字型数据)


学过的mov指令集合:
mov指令非法情况:
1.两个操作数类型不一样
2.两个操作数不能都是存储器
3.段寄存器操作的一些限制
(1)段寄存器间不能传送
(2)立即数不能直接窜送给段寄存器
(3)修改CS的指令是jmp等转移指令
  
mov具体用法:
mov 寄存器,立即数
mov 寄存器,寄存器
mov 寄存器,内存单元
mov 内存单元,寄存器
mov 段寄存器,寄存器
mov 寄存器,段寄存器
mov 段寄存器,内存
mov 内存,段寄存器
mov word(byte) ptr 内存单元,立即数
注:以上寄存器都是指通用寄存器:ax,bx,cx,dx,sp,bp,si,di
         立即数是存储在CPU的指令缓冲器中的。
  
add指令用法: 
add 寄存器,立即数
add 寄存器,寄存器
add 寄存器,内存单元
add 内存单元,寄存器
add word(byte) ptr 内存单元,立即数
注:add不支持任何段寄存器的操作。以上总结都是基于8086CPU。
sub指令同add一样
评论次数(1)  |  浏览次数(198)  |  类型(汇编笔记) |  收藏此文  | 

[  tomato   发表于  2012-04-01 23:28  ]

这章是一个大总结。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码