4.7 数组的读取和写入,type指令和一些杂项
可以通过
word ptr将db转为dw,然后按照dw的方式去存储数据
1. 段名也可以把其地址赋给变量
assume cs:codesg,ds:data,ss:stack
data segment
    db 12,34
    dw 12,34
    db 'hello world'
data ends
stack segment
    db 10 dup (0)
stack ends
codesg segment
    start:
    mov ax,data
    mov bx,stack
    mov ax,0afh
	
codesg ends
end start
 

2. 数组
2.1 type 指令
- 数组,在定义数据前面加一个符号,就是数组名
 - type后面加数组名可以求出数组的类型,如db为1,dw为2
 
assume cs:codesg,ds:data,ss:stack
data segment
	arr dw 12,34
	arr2 db 'hello world'
data ends
stack segment
	db 10 dup (0)
stack ends
codesg segment
    start:
    mov ax,type arr
	mov ax,type arr2
	mov ax,0afh
codesg ends
end start
 
2.2 标号
- 数据前面也可以是有一个标号的
 - 我们可以取得标号的地址再赋给变量
 
assume cs:codesg,ds:data,ss:stack
data segment
data ends
stack segment
	db 10 dup (0)
stack ends
codesg segment
	arr dw 12,34
	arr2 db 'hello world'
    start:
    mov si,offset arr
	mov bx,offset arr2
	mov ax,0afh
codesg ends
end start
 

2.3 数组的应用
- 数组也可以通过下标来取值
 - 找到array对应的内存,将其加两个字节,再从那个地方取得元素
 - 如果数组里面存放的是字符,那么从数组取到的则是该字符的ASCII码
 - 如果不加下标,则默认取数组的第一个元素
 - 也可以将变量里面的值赋给数组
 
assume cs:codesg,ds:data,ss:stack
data segment
data ends
stack segment
	db 10 dup (0)
stack ends
codesg segment
	arr dw 12,34
	arr2 db 'hello world'
    start:
    mov ax,arr[0]
	mov si,offset arr
	mov ax,0afh
codesg ends
end start
 


- 如果想要访问数据段的数据,得需要将这里的ds和它的标号data联系在一起
 - 即
 
mov ax,data
mov ds,ax
 
- 例如
 
assume cs:codesg,ds:data,ss:stack
data segment
	arr db 10h,20h,30h,40h,50h
	arr2 db 'hello world'
data ends
stack segment
	db 10 dup (0)
stack ends
codesg segment
    start:
    mov ax,data
	mov ds,ax
	mov al,arr[2]
	mov bx,data
codesg ends
end start
 


















![[源码] Android 上的一些快捷方式,如通知、快捷方式等](https://img-blog.csdnimg.cn/direct/aa40960bbf054a0890deeb2ad5208361.png)
