为什么需要使用栈结构?

在以往学习高级语言时,提到栈,下意识都会反映上来FILO,它是暂存数据的一种数据结构,但是为什么会用到栈?却一直讳莫如深,这是高级语言不会涉及到的底层的实现,最近在学习王爽老师的《汇编语言》,其中有一段点醒了我,现整理如下。

(一)这个问题的由来是对如下datasg段中每个单词改写为大写字母。

assume cs:codesg,ds:datasg

datasg segment
	db 'ibm             '
	db 'dec             '
	db 'dos             '
	db 'vax             '
datasg ends

codesg segment
start:	

codesg ends
end start

(二)分析:需要进行4x3次的二重循环,使用bx来定位要修改的行,用si定位要修改的列,用[bx+si]的寻址方式对目标单元进行寻址,实现如下

assume cs:codesg,ds:datasg

datasg segment
	db 'ibm             '
	db 'dec             '
	db 'dos             '
	db 'vax             '
datasg ends

codesg segment
start:	mov ax,datasg
		mov ds,ax
		mov bx,0
		
		mov cx,4
	s0:	mov si,0
		mov cx,3
		
	s:	mov al,[bx+si]
		and al,11011111b
		mov [bx+si]
  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值