汇编语言 用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

猜你喜欢

转载自blog.csdn.net/sinat_42483341/article/details/88685679