汇编语言 用push指令将a段中的前8个字形数据,逆序存储到b段中

题目要求

用push指令将a段中的前8个字形数据,逆序存储到b段中
在这里插入图片描述

执行过程

push之前

a段数据
在这里插入图片描述
(b段数据)栈空间↓ 不要问我为什么不全是0,我并不知道,只是找出了一些规律。详见我的前一篇博客
“明明定义了栈仍然no stack segment 以及栈空间数据被篡改问题”
https://blog.csdn.net/sinat_42483341/article/details/88665331
在这里插入图片描述

循环push之后

成功将a段中的前8个字形数据,逆序存储到b段中,程序结束
在这里插入图片描述

代码

在这里插入图片描述

;用push指令将a段中的前8个字形数据,逆序存储到b段中
;1个字占416进制位,占2个存储空间
;8个字占16个存储空间,因此,栈底指针指向18(十六进制10)?
assume cs:code,ds:a,ss:b

a segment
	dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends

b segment stack
	dw 0,0,0,0,0,0,0,0
b ends

code segment
start:
		;让数据段寄存器ds指向a的地址
		mov ax,a		;运行后,a的地址是076a:0000
		mov ds,ax
	
		;让栈段寄存器ss指向b的地址,sp指向栈底-2
		mov ax,b		;运行后,b的地址是076c
		mov ss,ax
		mov sp,10h		;sp指向十进制的18
	
		;循环push8次
		mov cx,8h
		mov bx,0h
s:		mov ax,ds:[bx]	;让ax临时存放a中数据
		push ax			;将ax中数据push进栈b中
		add bx,2		;偏移+=2
		loop s
	
		mov ax,4c00h
		int 21h
code ends
end start

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值