鱼C论坛

 找回密码
 立即注册
查看: 1655|回复: 0

[技术交流] 汇编笔记之8.数据处理的两个基本问题

[复制链接]
发表于 2012-12-5 14:21:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.两个基本问题:
(1)处理的数据在什么地方?
(2)处理的数据有多长?
2.寄存器集合(Reg):ax,bx,cx,dx,al,ah,bl,bh,cl,ch,dl,dh,sp,bp,di,si;
  段寄存器集合(sReg):cs,ds,ss,es;
3.几种错误的指令:
(1)mov ax,[cx]
(2)mov ax,[dx]
(3)mov ax,[dx]
(4)mov ax,[ds]
(5)mov ax,[bp+bx]
(6)mov ax,[si+di]
4.处理可分为:读取、运算、写入,在及其指令这一层来讲,它并不关心所要处理的数据是多少,而关心指令执行前的那一刻,它将要处理数据所在的位置
5.立即数:对于直接包含着机器指令中的数据,比如:mov ax,1,1就是一个立即数,执行前在CPU指令缓冲器中。
6.通过寄存器名指明要处理的数据的尺寸。如:ax是16bit=2Byte,al是8bit=1Byte
7.可以用操作符X ptr指明内存单元长度,X在汇编指令中可以是word或byte。比如:mov word ptr ds:[0],1
8.div是除法指令:
(1)除数:有8位和16位两种,在一个寄存器(reg)或内存单元中。
(2)被除数:默认放在AX或AX和DX中。如果除数是8位,被除数则为16位,默认在AX中存放;如果除数是16位,被除数则为32位,低16位放在AX中,高16位放在DX中。
(3)结果:如果除数是8位,则商存在AL中,余数存在AH中;如果除数是16位,则商存在AX中,余数存在DX中
(4)格式如下
div reg
div 内存单元
(5)举例
div byte ptr ds:[0]
含义:(al)=(ax)/((ds)*16+0))的商
     (ah)=(ax)/((ds)*16+0)的余数
div word ptr es:[0]
含义: (ax)=[(dx)*100000H+(ax)]/((es)*16+0)的商
      (dx)=[(dx)*100000H+(ax)]/((es)*16+0)的余数
div byte ptr [bx+si+8]
含义:(al)=(ax)/((ds)*16+(bx)+(si)+8)的商
       (ah)=(ax)/((ds)*16+(bx)+(si)+8)的余数
div word ptr [bx+si+8]
含义: (ax)=[(dx)*10000H+(ax)]/((ds)*16+(bx)+(si)+8)的商
      (dx)=[(dx)*10000H+(ax)]/((ds)*16+(bx)+(si)+8)的余数
9.db、dw、dd分别定义字节行数据、字行数据和双字数据。
10.dup是一个操作符,它是和db、dw、dd等数据定义伪指令配合使用的,用来进行数据重复
格式如下:
db 重复的次数 dup (重复的字节型数据)
举例如下:
db 3 dup (0,1)
定义了6个字节,他们是0、1、0、1、0、1,相当于db 0,1,0,1,0,1

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 06:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表