1、什么问题?
(1)处理的数据在什么地方?
(2)要处理的数据有多长?
2、reg,sreg什么意思?
为了描述上的简洁,在以后的课程中,我们将使用两个描述性的符号reg 来表示一个寄存器,用sreg表示一个段寄存器。
reg的集合包括:ax、bx、CX、、dx、ah、al、 bh、bl、ch、cl、 dh、dl、 sp、bp、si、di;
sreg的集合包括: ds、 Ss、 CS、es。
3、段寄存器是什么意思?
段寄存器是因为对内存的分段管理而设置的。
在8086中设置4个16位的段寄存器,用于管理4种段:CS是代码段,DS是数据段,SS是堆栈段,ES是附加段。
8.1节 bx、si、di和bp
4、bp是?
和栈寄存器一起使用的。
16位。
5、 bx、si、di和bp组成出现有什么规则?
这4个寄存器可以单个出现,或只能以4种组合出现: bx和si、bx和di、bp和si、bp和di。
下面的指令是错误的:
mov ax, [bx+bp]
mov ax, [si+di]
8.2节 机器指令处理的数据在什么地方
6、机器指令都是数据处理指令,处理可分为?
读取、写入、运算。
7、机器指令关心什么?
不关心数据的值,而关心指令执行前,数据的位置。
8、数据的位置可以在哪里?
CPU内部,内存,端口
8.3节 汇编语言中数据位置的表达
9、表达数据的位置的三个概念?
1、立即数idata
2、寄存器
3、段地址(SA)和偏移地址(EA)
10、什么是立即数?
在汇编指令中直接给出的数据。
8.4节 寻址方式
8.5节 指令要处理的数据有多长
byte和word
字操作,还是字节操作
11、修改内存的例子,重要
8.6节 寻址方式的综合应用
mov word ptr [bx].0ch,38 ; [bx+0ch],38 点就是加
add word ptr [bx].0eh,70
8.7 div 指令是除法指令
例子看书吧。
如果除数是8位,被除数是16位,被除数放在ax中。al存储商,ah存储余数。
div byte ptr ds:[0]-除数-字节单位
al = ax / ds16+0 16=10h
ah = ax / ds16+0
al = ax / ds*10H+0
每个0占4位,*10H相当于在原来的数的右侧加4个0。
如果除数是16位,被除数是32位,被除数放在dx,ax中。dx高位,ax低位。ax存储商,dx存储余数。
div word ptr es:[0]-除数,字单元
含义
(ax)=[ (dx) *10000H+ (ax)]/( (es) *16+0)的商
(dx)=[ (dx) *10000H+ (ax)]/ ( (es) *16+0)的余数
10000h是什么意思?
DX作为高位字,要左移十六位,肯定是10000H啦。
因为10000H每个0占4位,*10000H相当于在原来的数的右侧加16个0。
10000H是16进制,2进制要左移16位,
8.8节 伪指令dd
12、dd是什么?
用来定义双字节数据。
double word
data segment
db 1
dw 1
dd 1
data ends
在data段中定义了3个数据:
第一个数据为01H, 在data:0处,占1个字节;
第二个数据为0001H,在data:1处,占1个字;
第三个数据为00000001H,在data:3处,占2个字。
8.9节 dup
用来数据的重复。
db 3 dup (0)
db 0,0,0