您的位置:首页 > 其它

汇编学习之新手上路1+2+3+……+100

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

CODES SEGMENT

ASSUME CS:CODES

START:

;此处输入功能实现代码

MOV AH,4CH

INT 21H

CODES ENDS

END START

问题分析

利用loop循环将1+2+3+……+100求和,利用inc将数字加一,这里利用12345H变为1234H: 5H,最终将结果存贮到存储单元12345H中。

代码文档

DATAS SEGMENT

;此处输入数据段代码

DATAS ENDS

STACKS SEGMENT

;此处输入堆栈段代码

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

mov ax,0

mov cx,100

mov dx, 1

s: add ax,dx

inc dx

loop s

mov bx,1234H

mov ds, bx

mov ds:[5H],ax

MOV AH,4CH
INT 21H


CODES ENDS

END START

调试过程

1、用r 命令查看各寄存器初始值



2、用t 命令逐条执行代码





3、一个循环后用P指令全部执行



4、用d指令查看地址单元字型数据



由“高地址内存单元存放字型数据的高位字节,低地址内存单元

存放字型数据的低位字节“12345H 存储单元存放字型数据为

13BA。

总结与疑惑

1、熟练掌握ASM和dosbox调试。

2、掌握有关知识。

3、调试过程出现过此种现象,纠结了好久但是也没能找出原因,存疑……



心得体会:

刚开始学习汇编语言,虽然感觉它不难,但是做起实验来还是有些眼高手低,一方面DOSBOX和ASM的应用全是自学的,这期间走了好多弯路(可能自己有点笨),所以这里就给出使用教程吧~

1、双击ASM软件进入软件界面:




2、在代码区编写你所需要的代码,这里就是


3、点击保存按钮(不保存运行不了),点击运行按钮运行,运行界面如下

之后可以点击调试进入DOSBOX调试,调试界面如下

如输入r命令,p命令……(注意在这里有两种调试方法,一是debugger,另外是VC,可在工具>选项里选择,如图所示)


在这次实验中,自己的调试过程出现了bug,bug如图,地址内容竟然没有!!!My God!

而且我竟然还不知道原因,截止到博客书写时,真的心塞!如果有大佬看到了,还请给小弟说一下,不胜感激!看来还是要多学习多询问,后天有汇编课的时候要问问老师啦!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  汇编语言 dos命令