第八章——数据处理的两个基本问题
2018-02-28 本文已影响0人
LCM_一方
8.1,提出两个问题
1,处理的数据在什么地方?
2,处理的数据有多长?
8.2,BX,BP,SI,DI
[...]这种方式之前我们已经使用过很多次了,在这里详细的阐述其使用规则。
只能通过这几种方式:
[BX\SI\DI\BP]
[BX\BP\SI\DI
+idata]当然还有其他的形式,但是本质还是这个
[BX\BP+SI\DI]
[BX\BP+SI\DI+idata]
需要注意的是,在不加段前缀的情况下,[...]出现BP则默认以(SS)为段地址,其他的都默认(DS)为段地址。
8.3,汇编中数据位置的表达
立即数方式
比如 mov ax,1
寄存器方式
mov ax,bx
SA+EA方式
mov ax,[BX+DI]
段地址也可以显示给出,否则bx则默认ds为段地址,bp默认为ss为段地址。
8.4,寻址方式
图图8.5,处理数据的长度是多少?
有寄存器,则按照寄存器的长度来算。
没有寄存器,请用X ptr来指明,否则会出问题。
有些指令是默认长度的,比如PUSH和POP。
8.6,寻址方式的综合运用
[BX+idata+SI]这种相对基址变址,可以模拟结构体的访问。BX指向结构起始位置,idata指向数据项位置,SI指向数据项具体内容的下标。可以写成[BX].idata[SI]。
8.7,div指令
8.8,伪指令dd
dd表示开辟双字空间。
8.9,dup
数据类型 重复次数 dup (需要重复的数据,...)
如
db 3 dup (1,2,3)那么内存中是1,2,3,1,2,3,1,2,3