欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > 简单汇编教程10 数组

简单汇编教程10 数组

2024/10/23 12:49:50 来源:https://blog.csdn.net/charlie114514191/article/details/143138203  浏览:    关键词:简单汇编教程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  0DW  0DW  0DW  0DW  0DW  0DW  0DW  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 .dataSOURCE  db 1, 2, 3SUM     db 0
​
section .textglobal _start
_start:xor eax, eaxmov ecx, 3
do_add:add eax, [SOURCE + ecx - 1]loop do_add             ; loop promised the auto decline of cxor al, 0x30mov [SUM], almov edx, 1mov ecx, SUMmov ebx, 1mov eax, 4int 0x80
​mov ebx, 0mov eax, 1int 0x80

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com