7.02 通用寄存器
心得
其中又分为4个数据寄存器:AX、BX、CX、DX
两个16位指针寄存器:SP、BP;
两个16位变址寄存器:SI、DI;
1个16为指令指针:IP
4个16位段寄存器:CS、DS、SS、ES
1个16位标志寄存器:FLAG
- 常用来寻址的寄存器:
BP、SI、DI、BX
- 常用来做累加器(故名思意:即不断的做加法保存数据)的寄存器:
AX
- 其中AX、BX、CX、DX可分为高字节与低字节
AX -> AH、AL两个8位寄存器
BX -> BH、BL
CX -> CH、CL
DX -> DH、DL
r:查看当前所有寄存器的值
a: 向内存写入指令
t: 单步执行,一次执行一条指令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
作业
1.写出每条汇编指令执行后相关寄存器中的值。(自己网上查阅相关汇编指令的含义和作用)
mov ax,62627 AX=?
AX=2627
mov ah,31H AX=?
AX = 3127
mov al,23H AX=?
AX = 3123
add ax,ax AX=?
AX = 6246
mov bx,826CH BX=?
BX = 826C
mov cx,ax CX=?
CX = 6246
mov ax,bx AX=?
AX = 826C
add ax,bx AX=?
AX = 04D8
mov al,bh AX=?
AX = 0482
mov ah,bl AX=?
AX = 6C82
add ah,ah AX=?
AX = D882
add al,6 AX=?
AX = D888
add al,al AX=?
AX = D810
mov ax,cx AX=?
AX = 6246
2.只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。
- 目前学过的汇编指令?add,mov
mov ax, 2
add ax, ax
add ax, ax
add ax, ax
3.8086/8088通用寄存器的通用性表现在何处?8个通用寄存器各自有何专门的用途?哪些寄存器可以作为存储器寻址方式的指针寄存器?
两个变址寄存器:SI、DI;一个数据寄存器BX;一个指针寄存器BP;
这个是抄的网上的,因为毕竟目前对各个寄存器的使用较少,用多了应该就明白了;
这些寄存器除了各自规定的专门用途外,均可以用于传送和暂存数据,可以保存算术逻辑运算中的操作
数和运算结果;
8个通用寄存器的专门用途如下:
AX 字乘法,字除法,字I/O
BX 存储器指针
CX 串操作或循环控制中的计数器
DX 字乘法,字出发,间接I/O
SI 存储器指针(串操作中的源指针)
DI 存储器指针(串操作中的目的指针)
BP 存储器指针(存储堆栈的指针)
SP 堆栈指针
4.从程序员的角度看,8086/8088有多少个可访问的16位寄存器?有多少个可以访问的8位寄存器?
不清楚,还是查一查;
从程序员的角度看,8086/8088有14个可访问的16位寄存器;有8个可访问的8位寄存器;
看了答案,明白啥意思了,其中AX、BX、CX、DX寄存器都可以分高位字节和低位字节,分别
为AH、AL、BH、BL、CH、CL、DH,DL;
5.寄存器AX与寄存器AH和AL的关系如何?请写出如下程序片段中每条指令执行后寄存器AX的内容:(自己网上查阅相关汇编指令的含义和作用)
MOV AX,1234H
MOV AL,98H
MOV AH,76H
ADD AL,81H
SUB AL,35H
ADD AL,AH
ADC AH,AL
ADD AX,0D2H
SUB AX,0FFH
6、处理器的通用寄存器是否越多越好?通用寄存器不够用怎么办?
答: 处理器的通用寄存器并非越多越好,因为如果处理器的通用寄存器数量太多,势必
造成处理器的成本增加,同时也增加了处理器设计的复杂度;
如果通用寄存器不够用,应该采用内存中的存储单元代替,不过速度上要有所牺牲;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105