汇编语言笔记08-数据处理的两个基本问题(阶段总结)
2012-10-21 00:46
417 查看
转载必须注明出处,违者必究。http://www.cnblogs.com/dennisOne
数据处理涉及到两个基本问题:
(1). 处理的数据在什么地方?(内存,寄存器,端口还是指令缓冲器)
(2).要处理的数据有多长?(byte, word, dword)
☞寄存器总结
寄存器 reg:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、dl、sp、bp、si、di;
段寄存器sreg:ds、ss、cs、es.
☞bx、si、di、bp
在[…]中,这4个寄存器可以单个 出现,或者只能以4中组合出现(bx/bp+si/di):bx和si、bx和di、bp和si、bp和di。
正确指令:
错误指令:
在[...]中使用bp,默认的段地址是ss中。
但是可以指定段寄存器:
mov ax, ds:[bp] ; (ax)=((ds)*16+(bp))
mov ax, es:[bx] ; (ax)=((es)*16+(bx))
☞第一个基本问题:处理的数据在什么地方?
绝大部分机器指令都是进行数据处理的指令,处理大致分为3类:读取、写入、运算。而所要处理的数据可以在3个地方:CPU内部、内存和端口。
数据的位置:
☞总结:寻址方式(超全版本)
☞第二个基本问题:要处理的数据有多长?
8086CPU的处理能力
8086CPU的指令,可以处理两种尺寸数据:byte和word。所以可分为:字操作和字节操作。
指令如何指明是字操作还是字节操作?
☞C语言和汇编语言的寻址方式(对比)
问题描述:关于DEC公司的一条记录(1982年)如下:
公司名称:DEC
总裁姓名:Ken Olsen
排 名:137
收 入:40(40亿)
著名产品:PDP
任务:公司到了1988年,DEC公司的信息发生了如下变化:
(1) Ken OSen在富豪榜上的排名上升至38位;
(2) DEC的收入增加了70亿美元;
(3) 该公司的著名产品已变为VAX系列计算机
数据存放示意
C语言的处理方式
Assembly的处理方式
重点:Assembly和C的处理方式类比
类比:
8086CPU提供了[bx+si+idata]的寻址方式可以方便处理结构化数据。
bx定位整个结构体,idata定位结构体重的某一个数据项,用si定位数组项中的每一个元素。所以:[bx].idata和[bx].idata[si]更加优雅(和C语言很像)。
dec.cp[i]对应于bx.10h[si]。
☞div指令
示例:
☞伪指令 db dw dd
含义
date segment
db 1
dw 1
dd 1
date ends
第一个数据位01H,在data:0处,占1个字节。
第二个数据位0001H,在data:1处,占2个字节。
第三个数据位00000001H,在data:3处,占4个字节。
应用:用div计算data段中第一个数据除以第二个数据后的结构,商存在第三个数据的存储单元中。
assume ds:data, cs:code
data segment
dd 1000001
dw 100
dw 0
data ends
code segment
start: mov ax, data
mov dx, ax
mov ax, ds:[0]
mov dx, ds:[2]
div word ptr ds:[4]
mov ds:[6], ax
code ends
end start
☞操作符dup
操作符dup是由编译器识别处理的。它和db、dw、dd等数据定义伪指令配合使用。
用法
db/dw/dd 重复次数 dup (重复的数据)
示例
如何定义200个字节的栈端
stack segment
db 200 dup (0)
stack end
数据处理涉及到两个基本问题:
(1). 处理的数据在什么地方?(内存,寄存器,端口还是指令缓冲器)
(2).要处理的数据有多长?(byte, word, dword)
☞寄存器总结
寄存器 reg:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、dl、sp、bp、si、di;
段寄存器sreg:ds、ss、cs、es.
☞bx、si、di、bp
在[…]中,这4个寄存器可以单个 出现,或者只能以4中组合出现(bx/bp+si/di):bx和si、bx和di、bp和si、bp和di。
正确指令:
错误指令:
在[...]中使用bp,默认的段地址是ss中。
但是可以指定段寄存器:
mov ax, ds:[bp] ; (ax)=((ds)*16+(bp))
mov ax, es:[bx] ; (ax)=((es)*16+(bx))
☞第一个基本问题:处理的数据在什么地方?
绝大部分机器指令都是进行数据处理的指令,处理大致分为3类:读取、写入、运算。而所要处理的数据可以在3个地方:CPU内部、内存和端口。
数据的位置:
类型 | 位置 | 示例 |
立即数(idata) | 直接包含在机器指令的数据(CPU的指令缓冲器) | mov ax,1 |
寄存器 | 寄存器中 | mov ax, bx |
段地址(SA)和偏移地址(EA) | 内存中 | mov ax, ds:[0] |
☞第二个基本问题:要处理的数据有多长?
8086CPU的处理能力
8086CPU的指令,可以处理两种尺寸数据:byte和word。所以可分为:字操作和字节操作。
指令如何指明是字操作还是字节操作?
方法 | 示例 |
通过寄存器指明要处理的数据的尺寸 | |
X ptr指明内存单元的长度 | |
指令的默认方式(push/pop默认字操作) | push [1000H] pop [1000H] |
问题描述:关于DEC公司的一条记录(1982年)如下:
公司名称:DEC
总裁姓名:Ken Olsen
排 名:137
收 入:40(40亿)
著名产品:PDP
任务:公司到了1988年,DEC公司的信息发生了如下变化:
(1) Ken OSen在富豪榜上的排名上升至38位;
(2) DEC的收入增加了70亿美元;
(3) 该公司的著名产品已变为VAX系列计算机
数据存放示意
C语言的处理方式
Assembly的处理方式
重点:Assembly和C的处理方式类比
类比:
8086CPU提供了[bx+si+idata]的寻址方式可以方便处理结构化数据。
bx定位整个结构体,idata定位结构体重的某一个数据项,用si定位数组项中的每一个元素。所以:[bx].idata和[bx].idata[si]更加优雅(和C语言很像)。
dec.cp[i]对应于bx.10h[si]。
☞div指令
示例:
☞伪指令 db dw dd
含义
date segment
db 1
dw 1
dd 1
date ends
第一个数据位01H,在data:0处,占1个字节。
第二个数据位0001H,在data:1处,占2个字节。
第三个数据位00000001H,在data:3处,占4个字节。
应用:用div计算data段中第一个数据除以第二个数据后的结构,商存在第三个数据的存储单元中。
assume ds:data, cs:code
data segment
dd 1000001
dw 100
dw 0
data ends
code segment
start: mov ax, data
mov dx, ax
mov ax, ds:[0]
mov dx, ds:[2]
div word ptr ds:[4]
mov ds:[6], ax
code ends
end start
☞操作符dup
操作符dup是由编译器识别处理的。它和db、dw、dd等数据定义伪指令配合使用。
用法
db/dw/dd 重复次数 dup (重复的数据)
示例
db 3 dup (0) | db 0 0 0 |
db 3 dup (0,1,2) | db 0,1,2,0,1,2,0,1,2 |
db 3 dup ('abc', 'ABC') | db 'abcABCabcABCabcABC' |
stack segment
db 200 dup (0)
stack end
相关文章推荐
- 汇编语言第八章学习笔记——数据处理的两个基本问题
- 汇编语言学习第八章-数据处理的两个基本问题
- [置顶] [汇编学习笔记][第八章数据处理的两个基本问题]
- 汇编语言学习笔记(8)——数据处理的基本问题
- 汇编语言复习摘要八——数据处理的两个基本问题
- 汇编语言:第八章 数据处理的两个基本问题
- 汇编学习笔记--数据处理的两个基本问题
- 【汇编语言/底层开发】8、数据处理的两个基本问题
- [汇编语言]-第八章 数据处理的两个基本问题
- 汇编语言学习笔记(8)——数据处理的基本问题
- 汇编语言——第八章(数据处理的两个基本问题)
- 王爽汇编语言学习笔记(七) --数据处理中的两个问题
- 汇编语言07——数据处理的两个基本问题
- 汇编语言入门:数据处理的两个基本问题
- [汇编学习笔记][第八章数据处理的两个基本问题]
- 数据处理的两个基本问题04 - 零基础入门学习汇编语言41
- 数据处理的两个基本问题04 - 零基础入门学习汇编语言41
- 数据处理的两个基本问题05 - 零基础入门学习汇编语言42
- 第8章 数据处理的两个基本问题 笔记
- 数据处理的两个基本问题02 - 零基础入门学习汇编语言39