汇编 十个数求其最大值(第一步)

序言:纸上得来终觉浅,觉知此事要恭行!

为了应付考试学汇编,纸上做题时眼高手低,一看就思路来了,感觉没意思,心想要机器上来实战,一实战,出现问题了,而且,到处都是问题

针对这个题目,我准备分成好几篇文章给大家详细讲解,或许你会觉得这么简单的一道题,直接......,你实战以下就知道了!

要求十个数的最大值,首先,我们要有能力把这十个数挨个从内存中给取出来,并且查看是否成功

我们先实验从内存中拿三个数

DATA SEGMENT
        DATABASE DB 99H,56H,78H                            ;内存中的三个数
DATA ENDS

CODE SEGMENT
        ASSUME CS:CODE,DS:DATA
START:
        MOV AX,DATA
        MOV DS,AX

        MOV CX,3                                                             ;设置循环次数
        MOV BX,OFFSET DATABASE                         ;获得变量的首地址

INIT_DATA:
        MOV DL,BYTE PTR DS:[BX]                             ;挨个得到三个数据,并且一次放入dl寄存器用debug验证是否成功
        INC BX
        LOOP INIT_DATA                                                ;循环这么写是为了解决标号子程序结束后

        MOV AH,4CH                                                        ;返回不了原程序(中断和CALL RET除外)
        INT 21H
CODE ENDS
        END START

 

特别提醒:

1.尽量使用ds:[bx]  寄存器间接寻址   方式,本人在自己机器上用寄存器直接寻址方式一直出错

2.数据段定义变量时,变量名代表数据首地址,但是在代码段中变量名代表其首地址指向的那个数据,若需要求出首地址,需用offset伪指令或lea硬指令

执行结果:

 

 

posted @ 2019-01-30 12:55  IT蓝月  阅读(444)  评论(0编辑  收藏  举报
Live2D