【汇编语言实战】(二)、编写一程序计算表达式w=v-(x+y+z-51)的值(含代码、过程截图)

🌻🌻🌻前言

✨你好啊,我是“ 怪& ”,是一名在校大学生哦。
🌍主页链接:怪&的个人博客主页
☀️博文主更方向为:课程学习知识、作业题解、期末备考。随着专业的深入会越来越广哦…一起期待。
❤️一个“不想让我曾没有做好的也成为你的遗憾”的博主。
💪很高兴与你相遇,一起加油!

如果对汇编指令不太熟悉的话可以看我这篇文章:【汇编语言实战】(一)、第一次实验敲出的代码与常用指令解释(汇编语言第4版,王爽,超详细笔记)

一、题目

  • 实验内容:编写一程序计算表达式w=v-(x+y+z-51)的值。
  • 实验要求:
    1、变量x,y,z,v,的值是存储器的数字;
    2、会用debug在调试中,修改变量x,y,z,v的值;
    3、计算的结果保存在变量w中,初始值为0。

二、代码

注:汇编语言编程不区分大小写

DATAS SEGMENT
	x DW 5	;设变量并赋初值
	y DW 5
	z DW 5
	v DW 5
	W DW 0
DATAS ENDS

STACKS SEGMENT
	;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
	ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
	MOV AX,DATAS
	MOV DS,AX
	
	MOV CX,0		;CX=0
	MOV AX,X		;AX=X
	ADD AX,Y		;AX=X+Y
	ADD AX,Z		;AX=X+Y+Z
	SUB AX,51		;AX=X+Y+Z-51
	MOV BX,V		;BX=V
	SUB BX,AX		;BX=V-(X+Y+Z-51)
	MOV CX,BX		;CX=V-(X+Y+Z-51)
	MOV W,CX		;W=V-(X+Y+Z-51)
	
	MOV AH,4CH
	INT 21H
CODES ENDS
	END START

三、运行流程图

1、不改xyzv初值的运算

请添加图片描述
请添加图片描述
请添加图片描述

运算结果分析:

  • w=v-(x+y+z-51)将x=y=z=v=5带入得,w=41
  • 由于将w值存入CX,CX最后等于0029,十六进制的0029转化为十进制2*16+9=41
  • 所以结果计算正确

2、修改xyzv初值的运算

注:是在执行(下述代码作用:即初始化变量)

MOV AX,DATAS
MOV DS,AX

后紧接着执行(下述代码作用:修改变量的值)

-e 143f:0 0 0 0 0

请添加图片描述
请添加图片描述
实验结果分析:

  • 将x=y=z=v=0, w=v-(x+y+z-51)带入得,w=51
  • 运行结果w=CX=0033,十六进制的0033转化为十进制为:3*16+3=51
  • 所以计算正确

四、变量的理解

以不改变初值的运算为例:
其在上述已给的四个图后仍有一个图:
请添加图片描述

  • 数据寄存器 DS=143F

  • 代码中设置的变量:X,Y,Z,V,W依次存储在143F:00开始的内存中

  • 存储遵循“高位村高位,低位存低位”

  • DW:字,DB:字节;一个字为两个字节,143D:0000为一个字节
    例如:
    143F:0000存的05,143F:0001存的00,合起来即存的为0005即第一个变量X的初始值5
    143F:0002存的05,143F:0003存的00,合起来即存的为0005即第一个变量Y的初始值5
    依次类推

所以我们可以通过下述代码,分别来改变X,Y,Z,V的值

-e 143f:0 0 0 0 0

❤️❤️❤️忙碌的敲代码也不要忘了浪漫鸭!

请添加图片描述

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪&

感谢您的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值