一.前言
汇编学习的过程参考了王爽老师的《汇编语言》第三版,在笔记当中会相应的书目页数,可以翻书查阅。
王爽老师的书写的真是好…
二.零散知识点
Q1: push和pop指令对原内存单元(数据来源)的影响如何?
A1: push ax是指将ax中的值推入栈顶,但是不改变ax的值
pop ax是指将栈顶元素的值传入ax中,只改变指针位置,原内存单元内容不变
比如说,地址ss:sp是1000:0,当中存放的数据是4c00H,使用pop ax后,相当于是只是执行了如下两个语句:
mov ax,ss:0
add sp,2
只是给ax赋了个值,然后把指针挪了两个位置,但是内存单元1000:0仍然还是原来的数据4c00H。
(汇编语言p61)
Q2: 是否可以直接让两个内存单元之间相互传值?
比如说像这样:mov ds:[bx],es:[bx]
A2: 不可以,一定要经过寄存器中转。站在CPU的角度,任何内存中的数据都必须先进入CPU才能被处理,那么数据进入CPU的哪个部位?当然是CPU中的寄存器啦!
随便翻一页汇编书就会发现。(例如汇编语言p156)
Q3: 循环结点的位置应该如何放置?
A3: (1)用栈存放cx值时