4.7 数组的读取和写入,type指令和一些杂项

本文详细介绍了在汇编语言中如何使用数组(包括db和dw类型)、type指令、标号以及DS和AX在数据段访问中的作用,展示了如何通过下标操作数组元素和获取字符的ASCII码。
摘要由CSDN通过智能技术生成

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

image.png

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

image.png

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

image.png

image.png

  • 如果想要访问数据段的数据,得需要将这里的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

image.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值