【不求甚解】《汇编语言》第 11 章:直接定址表

这篇博客介绍了汇编语言中直接定址表的概念,探讨了如何用标号表示内存单元地址及其长度。文中提到了code、a、b、start、s等标号作为内存地址的示例,并详细解释了无冒号标号如a、b如何同时描述地址和内存单元长度,例如a表示从code:0开始的字节单元,而b表示从code:8开始的字单元。
摘要由CSDN通过智能技术生成


前言

参考书籍:
王爽。汇编语言。北京:清华大学出版社, 2013:1-1

本人菜狗一枚,不敢咬文嚼字,只能站在巨人的肩膀上窥探一下未曾了解的世界。


描述了单元长度的标号

assume cs:code

code segment
	a: db 1, 2, 3, 4, 5, 6, 7, 8
	b: dw 0
	
start:
	mov si, offset a
	mov bx, offset b
	mov cx, 8
s:
	mov al, cs:[si]
	mov ah, 0
	add cs:[bx], ax
	inc si
	loop s
	
	mov ax, 4c00h
	int 21h
code ends

end start

程序中,code、a、b、start、s 都是标号。这些标号仅仅表示了内存单元的地址。

另一种标号,不但表示内存单元的地址,还表示了内存单元的长度,即表示在此标号处的单元尺寸(字节/字/双字)。

assume cs:code
code segment
	a db 1, 2, 3, 4, 5, 6, 7, 8
	b dw 0
	
start:
	mov si, 0
	mov cx, 8
	
s:
	mov al, a[si]
	mov ah, 0
	add b, ax
	inc si
	loop s
	
	mov ax, 4c00h
	int 21h
code ends 

end start

标号 a、b 后面没有":",它们是同时描述内存地址和单元长度的标号。

  • 标号 a,描述了地址 code:0,和从这个地址开始,以后的内存单元都是字节单元。

  • 标号 b,描述了地址 code:8,和从这个地址开始,以后的内存单元都是单元。

该指令可以代表一段中的内存单元。

比如对于程序中的 “b dw 0"

指令等同于指令
mov ax, bmov ax, cs:[8]
mov b, 2mov word ptr cs:[8], 2
inc binc word ptr cs:[8], 2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值