Chinaunix首页 | 论坛 | 博客
  • 博客访问: 524112
  • 博文数量: 161
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1947
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-25 01:20
文章分类

全部博文(161)

文章存档

2011年(44)

2010年(47)

2009年(48)

2008年(22)

我的朋友

分类:

2009-08-28 23:08:35

1>
数据处理的两个基本问题
1处理的数据在什么地方
2要处理的数据有多长
描述性符号
寄存器reg:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl, sp,#bp,si,di;
段寄存器sreg:ds,ss,cs,es;
what's bp?
8086中[...]可用的寄存器是bx,si,di,bp,可以单独出现,也可以独立出现,一般用两个
只要在[...]中用bp,而指令中没有显示给出段地址,默认用ss

2>
机器指令处理的数据所在位置
一般指令都是数据处理的指令
处理大致可分为3类:读取,写入,运算
处理的数据可以在3个地方:cpu内部(寄存器,或是指令缓冲区),内存,端口

3>
汇编语言中数据位置的表达
立即数idata
mov ax,1
add bx,200h
寄存器
段地址sa+偏移地址ea
mov ax,[bx+1] ;段地址默认在ds中
总结:寻址方式
直接寻址[idata]
寄存器间接寻址[bx]
寄存器相当寻址
用于结构体[bx]idata
用于数组idata[si]
用于二维数组[bx][idata]
基址变址寻址
用于二维数组[bx][si]
相对基址变址寻址
用于表格(结构)中的数组项
[bx].idata[xi]
用于二维数组
idata[bx][si]

4>指令要处理的数据有多长
处理数据两种:byte word
所以在进行的是字操作还是字节操作,要指明
在无寄存器存在时用 x ptr 指明内存单元的长度
mov word ptr ds:[0],1
inc word prt [bx]
mov byte ptr ds:[0],1
inc byte prt [bx]
push pop只进行字操作
5>
寻址方式的综合应用
关于dec公司的..条记录
公司名称:dec
总裁姓名:ken olsen
排名:137
收入:40
产品:pdp
[bx+si+idata]=(ds)*16+(bx)+(si)+idata ; ds:bx大步确定结构体,idata,常量中确定数据项,si小步确定数据项的单个元素
结构化的数据处理
从结构化的角度去看待所要处理的数据
结构化的数据包含多个数据项(类型不同)
[bx+idata+si]方式访问结构体中的数据
bx定位整个结构体
idata定位某个数据项
si定位数组中的每个元素
等效书写[bx].idata  ;[bx].idata[si]
mov word ptr [bx].0ch 38 ;将38送入地址[bx].0ch([(bx)+0ch]) ,首选地址为ds:bx  ,指针方向:+0ch

6>
div指令
除数:有8位,16位,在一个寄存器或内存中
被除数:默认放在ax或dx+ax中
       除数8位,则被除数16位,被除数默认在ax中存放
       除数16位,则被除数32位,被除数默认放在dx和ax中,dx高16位/ax存放低16位
结果:
如果除数8位,则,al存储除法操作的商
               ah存储除法操作的余数
如果除数16位,则,ax存储除法操作的商
                dx存储除法操作的余数
     
格式:
div reg  ; 根据默认8/16找到被除数,和给定的除数进行计算
div 内存单元
 
分析100001/100
100001是被除数用2个寄存器,0001 86a1H
mov dx ,0001H
mov ax ,86a1h
mov bx, 100H
div bx
结果:ax=商0186
     dx=余数00a1

7>伪指令
db 字节
dw  子
dd  double word 双字
8>dup
和db dw dd一样!由编译器识别处理的符号
格式
db 重复的 次数 dup('重复的字节型数据')
dw 重复的 次数 dup('重复的字型数据')
dd 重复的 次数 dup('重复的双字型数据')
实验 寻址方式在结构化数据访问中的应用
assume cs:codesg
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986',1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
;表示21年的字符串
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 34980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
;21年公司收入数据
dw 3,7,9,13,28,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
;公司人员
data ends
table segment
db 21 dup ('year summ ne ?? ')
table ends

 
阅读(694) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-06-05 02:20:16

大连法律咨询在线 http://www.fabowang.com 大连律师在线咨询 http://www.fabowang.com 大连法律顾问网 http://www.fabowang.com 大连律师咨询 http://www.fabowang.com