这里写自定义目录标题
- 第3章 寄存器(内存访问)
- 3.1 内存中字的存储-问题3.1
- 3.2DS和[address]-问题3.2
- 3.3字的传送
- 3.4 没有
- 3.5数据段-问题3.5
- 检测点3.1
- 3.6 栈-问题3.6
- 3.9 push pop命令-问题3.7
- 3.10栈段
- 检测点3.2
- 第9章 转移指令的原理
- 9.1操作符offset
- 9.6转移地址在内存中的jmp指令
- 检测点9.1
- 9.7jcxz指令
- 9.8loop指令
- 第10章 CALL 和RET指令
- 10.1 ret和retf
- 检测点10.1
- 10.3依据位移进行转移的call指令
- 检测点10.2
- 10.4转移的目的地址在指令中的call指令
- 检测点10.3
- 10.5转移地址在寄存器中的call指令
- 10.6转移地址在内存中的call 指令
- 检测点10.5
- 10.7call和ret的配合使用
- 10.8mul
- 10.10参数和结果传递的问题
- 10.11批量数据的传递
- 10.12寄存器冲突的问题
第3章 寄存器(内存访问)
3.1 内存中字的存储-问题3.1
3.2DS和[address]-问题3.2
3.3字的传送
问题3.3
问题3.4
3.4 没有
3.5数据段-问题3.5
检测点3.1
(1)(题目:略)
第一空:2662H
第二空:E626H
第三空:E626H
第四空:2662H
第五空:D6E6H
第六空:FD48H
第七空:2C14H
第八空:0000H
第九空:00E6H
第十空:0000H
第十一空:0026H
第十二空:000CH
1.指令序列如下:
mov ax,6622h
jmp 0ff0:0100
mov ax,2000h
mov ds,ax
mov ax,[0008]
mov ax,[0002]
2.写出CPU执行每条指令后,CS、IP和相关寄存器中的数值。
数据和程序在内存中是没有区别的
3.6 栈-问题3.6
3.9 push pop命令-问题3.7
问题3.8
问题3.9 交换ax和bx的内容
问题3.10
3.10栈段
问题3.11
问题3.12
检测点3.2
mov ax,2000H
mov ss,ax
mov sp,10H
(2)
mov ax,1000H
mov ss,ax
mov sp,0H
第9章 转移指令的原理
9.1操作符offset
问题9.1
9.6转移地址在内存中的jmp指令
检测点9.1
1
db 0,0,0
;解题理由:为了使IP的值经跳转后变为0,则需保证ds:[bx+1]处的字型单元数据为0000H,
;所以定义3个字节型数据0就符合“应该”的要求
2
类比
3
经上机调试得出:CS=0006H,IP=00BEH
9.7jcxz指令
9.8loop指令
检测点9.3
inc cx
第10章 CALL 和RET指令
10.1 ret和retf
检测点10.1
10.3依据位移进行转移的call指令
检测点10.2
10.4转移的目的地址在指令中的call指令
pop 先出来的是ip
后出来的是cs
检测点10.3
要弄清这两点,就必须先清楚cpu如何执行call指令
- cpu读入指令call xxxx
- ip自增到下一条指令
- 向ss:sp中依次存入(cs),ip
- 改变(cs),ip的值,跳转
将1000:0008存入ss:sp中并跳转到1000:0009
pop ax ax=8h
add ax,ax ax=8+8=10h
pop bx bx=1000h
add ax,bx ax=10h+1000h=1010h
10.5转移地址在寄存器中的call指令
0BH
我的理解:
对于mov ax,6来讲,就是让ax=6H。
我们知道,对于call 16位reg格式来说,相当于push ip;jmp 16位reg。
那么对于call ax来讲,首先ip在运行到这句话时指向1000:3,这个时候实际上还未进行push ip的工作,这时ip将跳转到下一语句1000:5上,也就是此时ip=5,在这时,才会进行push ip的工作,那么在堆栈里存储了5这个数。
之后要进行jmp ax,而ax在第一个语句里被赋值为6,因此jmp ax就是jmp到1000:6语句中,对应的语句是mov bp,sp;要知道sp其实就是当前堆栈ss:sp中的sp,那么此时sp=5,那么bp就被赋值为5。
最后执行ax+bp,就是5+6,换算成16进制是000BH。
10.6转移地址在内存中的call 指令
检测点10.5
ax=1
bx=0
10.7call和ret的配合使用
问题10.1
10.8mul
10.10参数和结果传递的问题
计算data 段中第一组数据的3次方,结果保存在后面一组dword单元中。
10.11批量数据的传递
将一个全是字母的字符串转化为大写。
10.12寄存器冲突的问题
cx冲突
改进: