汇编语言的学习总结1~3章

汇编语言学习

1.不同计算机内存地址空间的分配方式是不一样的
2.注意指令的两个操作对象的位数应当是一致的
3.8086cpu有20位地址总线,可以传送20位地址,达到1MB的寻址能力。如果将地址从内部简单地发出,那么它只能送出16位的地址,表现出的寻址能力只有64KB
4.cs为代码段寄存器,ip为指令指针寄存器,
任何时刻,cpu将cs:ip指向的内容当作指令执行,每次运行后ip=ip+所读取指令的长度,从而指向下一条指令,ds为段地址寄存器,ss存放栈地址寄存器,偏移地址存放在sp中

5.r命令查看、改变cpu寄存器的内容,d命令查看内存中的内容,e命令改写内存中的内容,
u命令将内存中的机器指令翻译成汇编指令,
t命令执行一条机器指令,a命令以汇编指令的格式在内存中写入一条机器指令

-d cs:0查看当前代码段中的指令代码
-d ss:0查看当前栈段中的内容
6.将4E20H存放在内存单元中,则0地址存放的为20H,1地址存放的为4EH
7.在codesg segment和codesg ends之间写的汇编指令是这个段中存放的内容
8.压栈出界往低地址空间走(往上走),弹栈出界往高地址空间走(往下走),一个16位寄存器栈的最大空间为64KB

附加习题
检测点2.2
(1)给定段地址为0001H,仅通过变化偏移地址寻址,cpu的寻址方位为
实验任务(3)
查看内存中的内容
pc机主板上的ROM中写有一个生产日期,在内存FFF00H~FFFFFH的某几个单元中,请找到这个生产日期并试图改变它
必须写成dffff:0 ff才能连续读取内存中的内容
问题3.6
如果将10000H~1000FH这段空间当作栈,初始状态栈是空的,此时,SS=1000H,求SP
SP=0000H,计算栈顶时都是栈的最大内存加一
检测点3.2
(1)补全下面的程序,使其可以将10000H~1000FH中的8个字,逆序复制到2000H----2000FH中,完成下列代码



mov ax,1000H
mov ds,ax
1.
2.
3.
push [0]
push [2]
push [4]
push [6]
push [8]
push [A]
push [C]
push [E]

思路:push [0],push[2]等操作即将10000H~1000FH压入相应的位置,所以只需将栈顶指向20010H的位置即可
实验2

mov ax,2000
mov ss,ax
mov sp,10

运行之前d 2000:f
2000:0000 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
运行完之后地址中存储的内容会发生变化
2000:0000 00 00 00 00 00 00 00 20-00 00 08 01 39 0B 9D 05
原因是mov ss,ax mov sp,10两个指令时使用了中断机制,执行中断例程时,cpu会将一些中断例程使用的变量自动压栈到栈中。

发布了17 篇原创文章 · 获赞 7 · 访问量 2991

猜你喜欢

转载自blog.csdn.net/znevegiveup1/article/details/103761022