简单汇编教程10 数组

目录

实践:相加连续的数


数组是在内存中连续的一串变量。我这样说,可能你已经想到的大致的定义了:

复制代码
NUMBERS DW  34,  45,  56,  67,  75, 89

现在我们就定义了一个Number数组,里面存放的连续的六个数字:34, 45, 56, 67, 75, 89。回忆我们处理字符串的方式,拿到第N个字符的位置是取出偏移地址量N - 1个元素大小

复制代码
mov ax, [NUMBERS + 2]

取出了第三个元素56来。就是这个意思。

当然,有人可能希望写出

复制代码
int all_zero[8] = {0}; // 全部为0

的等效代码,可以定义:

复制代码
all_zero    DW  0
            DW  0
            DW  0
            DW  0
            DW  0
            DW  0
            DW  0
            DW  0

太麻烦了,其实这样:

复制代码
all_zero   DW  0, 0 , 0 , 0 , 0 , 0 , 0 , 0

或者使用TIMES指令:

复制代码
all_zero TIMES 8 DW 0

是比较常见的定义数组的方式。

实践:相加连续的数

内存中设定连续的数字1,2,3,对他们做相加而且打印出来

复制代码
charliechen@Charliechen:~/demo/demo12$ ./result 
6

效果如上即可!不需要提示!

复制代码
; --------------------------------------------------
;   Program written in 10.20 2024
;   Author:             Charlie chen
;   Functionality:      Add Continious number
; --------------------------------------------------
​
section .data
    SOURCE  db 1, 2, 3
    SUM     db 0
​
section .text
    global _start
_start:
    xor eax, eax
    mov ecx, 3
do_add:
    add eax, [SOURCE + ecx - 1]
    loop do_add             ; loop promised the auto decline of cx
    or al, 0x30
    mov [SUM], al
    mov edx, 1
    mov ecx, SUM
    mov ebx, 1
    mov eax, 4
    int 0x80
​
    mov ebx, 0
    mov eax, 1
    int 0x80
相关推荐
传奇开心果编程41 分钟前
【Rust入门练中学】第4课:函数与所有权入门
开发语言·学习·rust
sunoo-2291 小时前
【ARM嵌入式学习笔记Day5】一文打通GPIO中断全链路:从硬件引脚→GIC→汇编入口→C语言处理
arm开发·笔记·学习·中断·gic·裸机开发
m4Rk_1 小时前
【论文阅读】Agent 记忆机制(76):SEEM——从碎片检索到完整事件重建
论文阅读·人工智能·学习·开源·github
我命由我123451 小时前
Mac 操作系统 - 一些使用记录
运维·windows·学习·系统安全·运维开发·mac·学习方法
千谦阙听1 小时前
【 C++篇】:模板初阶——泛型编程、函数模板与类模板
开发语言·c++·学习·visual studio
imDwAaY2 小时前
消息队列四大核心问题:顺序性、幂等性、可靠性与一致性
学习·kafka·rabbitmq
老王爱玩车2 小时前
第6讲:数组和函数实践-----控制台扫雷
c语言·开发语言·学习
是隼人2 小时前
buuctf-pwn [NewStarCTF 2023 公开赛道]orw&rop(shellcode+orw)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
艾莉丝努力练剑2 小时前
【AI大模型接入SDK】SQLite基础概念与C的API开发
网络·c++·人工智能·学习·架构
東隅已逝,桑榆非晚2 小时前
List(类函数学习)
c++·笔记·学习