基址变址寻址来实现暂存数据功能

关于基址变址寻址技术,利用栈暂存数据

参考王爽老师的《汇编语言》第四版,对P158的汇编代码,进行了个人理解标注。仅供参考,存在错误之处,请大家斧正。

assume cs:codesg,ds:datasg,ss:stacksg // 代码段cs、数据段ds、栈段ss

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

stack segemnt 
	dw 0,0,0,0,0,0,0,0  //  共16个字节
stack segment

codesg segment
	start: mov ax,stacksg
			mov ss,ax
			mov sp,16

			mov ax,datasg
			mov ds,ax
			mov cx,4
		  s0:push cx	 // 将外层循环的cx压栈,共四个db数据
		  	mov si,0
		  	mov cx,3	// cx设置为内层循环的次数,每个db均含有三个字母

		 s:mov al,[bx+si]   // 利用基址变址寻址
		 and al,11011111b	   // 小写转大写
		 mov [bx+si],al
		 inc si // inc si 代表si自增
		 
		 loop s // 从栈顶弹出cx的值,恢复cx。
		 add bx,16
		 pop cx
		 loop s0 // 外层循环的loop指令将cx的计数值减1;

		mov ax,4c00h  // 程序结束的标志
		int 21H
codesg ends
end start
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值