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

目录:

  • 前言
  • 一、题目
  • 二、代码
  • 三、运行流程图
      • 1、不改xyzv初值的运算
      • 2、修改xyzv初值的运算
  • 四、变量的理解
  • ❤️❤️❤️忙碌的敲代码也不要忘了浪漫鸭!

前言

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

如果对汇编指令不太熟悉的话可以看我这篇文章:【汇编语言实战】(一)、第一次实验敲出的代码与常用指令解释(汇编语言第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)的值(含详细代码注释)_第1张图片
【汇编语言实战】(二)、编写一程序计算表达式w=v-(x+y+z-51)的值(含详细代码注释)_第2张图片
【汇编语言实战】(二)、编写一程序计算表达式w=v-(x+y+z-51)的值(含详细代码注释)_第3张图片

运算结果分析:

  • 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

【汇编语言实战】(二)、编写一程序计算表达式w=v-(x+y+z-51)的值(含详细代码注释)_第4张图片
【汇编语言实战】(二)、编写一程序计算表达式w=v-(x+y+z-51)的值(含详细代码注释)_第5张图片
实验结果分析:

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

四、变量的理解

以不改变初值的运算为例:
其在上述已给的四个图后仍有一个图:
【汇编语言实战】(二)、编写一程序计算表达式w=v-(x+y+z-51)的值(含详细代码注释)_第6张图片

  • 数据寄存器 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

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

【汇编语言实战】(二)、编写一程序计算表达式w=v-(x+y+z-51)的值(含详细代码注释)_第7张图片

你可能感兴趣的:(程序员的必修之课,汇编语言,学习笔记,实验)