汇编作业一 使用循环计算1 您所在的位置:网站首页 等差数列求和100题及答案 汇编作业一 使用循环计算1

汇编作业一 使用循环计算1

2023-11-01 20:53| 来源: 网络整理| 查看: 265

汇编作业一

题目:按下面的程序框架编程,使用循环语句计算1+2+3+…+100,并把结果保存在物理地址12345H指向的字存储单元中。

CODES SEGMENT ASSUME CS:CODES START: ;此处输入功能实现代码 MOV AH,4CH INT 21H CODES ENDS END START 一、方法一 1.1 实验算法

  先将物理地址设为12345h,再通过ax做中间变量循环100次累加到bx暂时存储,每循环依次就将ax的值自增1,直至100,循环结束后将bx的值存储到物理地址12345h。

1.2 实验代码 assume cs:code code segment start:mov ax,1234h mov ds,ax mov bx,0005h ;设置地址ds:[bx]=1234:5 mov ax,0 mov dx,1 mov cx,100 ;设置循环100次 s:add ax,dx inc dx loop s mov ds:[bx],ax mov ah,4ch int 21h code ends end start 1.3 实验结果截图

在这里插入图片描述

1.4 实验感想

  此方法为最简单直接的方法,不管累加至多少,只需要改变loop循环次数即可,但是计算速度将在一定程度上受限。

二、方法二 1.1 实验算法

  利用数据1-100为公差是1的等差数列,通过公式(其中是等差数列和,)可求得结果。

1.2 实验代码 assume cs:code code segment start:mov ax,1234h mov ds,ax mov bx,0005h ;设置地址ds:[bx]=1234:5 mov ax,0001h mov cx,64h ;将100赋给cl add ax,cx ;等差数列首项加末项,即1+100 imul cx ;(1+100)*100 mov cx,2 mov ds:[bx],cx ;将cx的值赋给ds:[bx] div word ptr ds:[bx] ;将ax/2,结果赋给ax,即ax=((1+100)*100)/2 mov ds:[bx],ax mov ah,4ch int 21h code ends end start 1.3 实验结果截图

Alt

1.4 实验感想

  此方法相比方法一优化了计算方式,将题目简化为求等差数列之和,通过等差数列求和公式直接计算即可,速度相比之下提高了很多,不足在于乘除法运算需要注意格式与要求。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有