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

博客围绕基址变址寻址技术,介绍利用栈暂存数据。作者参考王爽老师《汇编语言》第四版,对P158汇编代码进行个人理解标注,供大家参考,也希望大家指正错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

参考王爽老师的《汇编语言》第四版,对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
如何使用Quartus II 13进行该模型机的设计请讲述详细步骤 本次实习拟通过机器指令实现求数组M中能被4整除的数的和,并将结果存入到N地址单元功能(如数组数据求和),通过分析,本次设计需要实现一个16位的模型机,包括LOAD 指令(加载指令),STORE 指令(存储指令),CMP 指令(比较指令),ADD 指令(加法指令,JMP/JZ 指令(跳转指令)指令,可实现直接寻址寻址方式,控制器采用微程序控制器控制器。 2.开发工具选择 开发平台: Quartus II 13.0 硬件描述语言: Verilog HDL 3.指令系统的设计 1)指令格式 Op:5位 寻址方式:2位 内存地址:9位 2)指令操作码 操作码 指令助记符 功能描述 00001 LOAD 将内存内容加载到寄存器 00010 STORE 将寄存器内容存储到内存 00011 MOV 寄存器间数据传送 00100 LOADI 将立即数加载到寄存器 00101 JMPI 无条件跳转 00110 BEQI 相等则跳转 00111 INC 寄存器内容加 1 01000 DEC 寄存器内容减 1 01001 ADD 寄存器加法 01010 SUB 寄存器减法 01011 AND 寄存器逻辑与 01100 OR 寄存器逻辑或 01101 XOR 寄存器逻辑异或 01110 NOT 寄存器逻辑非 01111 CMP 寄存器比较(设置标志位) 10000 SHL 逻辑左移 10001 SHR 逻辑右移 10010 SAR 算术右移 10011 JMPR 寄存器间接跳转 10100 BNEI 不相等则跳转 10101 BGTI 大于则跳转 10110 BLTI 小于则跳转 10111 HALT 停机指令 三、寻址方式设计 补充完整的寻址方式如下: 寻址寻址方式 功能描述 示例指令 00 直接寻址 地址字段直接表示内存地址 LOAD R1, [100] 01 立即寻址 地址字段表示立即数 LOADI R1, #100 10 寄存器间接寻址 寄存器内容作为内存地址 LOAD R1, [R2] 11 变址寻址 基址寄存器 + 偏移量 LOAD R1, [R2+5]
最新发布
06-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值