汇编程序设计笔记(一),一些零散的知识点

这篇博客是初学者对汇编语言的学习笔记,重点探讨了push和pop指令对内存单元的影响,指出push不改变源数据而pop仅改变栈指针;解释了不能直接在内存单元间传递值,必须通过寄存器中转的原因;讨论了循环中cx值存储的栈节点位置,并简单介绍了如何在汇编语言中利用基址实现结构体数据的存储和操作。
摘要由CSDN通过智能技术生成

一.前言

汇编学习的过程参考了王爽老师的《汇编语言》第三版,在笔记当中会相应的书目页数,可以翻书查阅。
王爽老师的书写的真是好…

二.零散知识点

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值时࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值