汇编中遇到的程序题看不懂

DSEG SEGMENT
ARY DW 100 DUP(?)
COUNT DW 100
SUM DW ?
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG
MOV DS,AX
CALL PROADD
MOV AX,4C00H
INT 21H
PROADD PROC NEAR
PUSH AX
PUSH CX
PUSH SI
LEA SI,ARY ;将ary的偏移地址放到si中,使si指向ary
MOV CX,COUNT
XOR AX,AX ;很常用的寄存器清零操作
NEXT: ADD AX,[SI]
ADD SI,2
LOOP NEXT
MOV SUM,AX
POP SI
POP CX
POP AX
RET
PROADD ENDP
CSEG ENDS
END START

初学汇编,请高手们帮我看看这段程序的功能,最好能在每句话后面标有注释。谢谢!

主要的就是这个子程序了
PROADD PROC NEAR
PUSH AX ;
PUSH CX ;压栈这些数据
PUSH SI ;即保存 目的怕数据被修改因为 ;下 面 可 能用到

LEA SI,ARY ;将ary的偏移地址放到si中,使si指向ary
MOV CX,COUNT ;cx 中放的是循环的次数
XOR AX,AX ;很常用的寄存器清零操作
NEXT: ADD AX,[SI] ;SI指向的数据全部相加
ADD SI,2 ;跳过两个字节因为上面定义的是DW
LOOP NEXT ;循环 cx 的次数
MOV SUM,AX ;结果放到 SUM
POP SI
POP CX ;还原。。。
POP AX
RET

返回以后 调用DOS 21中断 显示结果

楼上的真行 那么简单 还说人家格式排的不好
她说的那只是分配一块 需要用到的空间
就像是 c 里面的变量空间

看86 关键是 子程序 和中断!!
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-05-14
你格式排的不好啊 看的狠费力 你参考书上的吧 比如DW是替代
DSEG SEGMENT
ARY DW 100 DUP(?)
COUNT DW 100
SUM DW ?
DSEG ENDS
是一块 是先写的交代的东西 正文从START开始 后面的你自己看书吧 比较简单的 应该能看懂

汇编中遇到的程序题看不懂
PUSH CX ;压栈这些数据 PUSH SI ;即保存 目的怕数据被修改因为 ;下 面 可 能用到 LEA SI,ARY ;将ary的偏移地址放到si中,使si指向ary MOV CX,COUNT ;cx 中放的是循环的次数 XOR AX,AX ;很常用的寄存器清零操作 NEXT: ADD AX,[SI] ;SI指向的数据全部相加 ADD...

一道汇编程序题中有地方不懂
1.-2的作用是因为DB 0DH,0AH这句,这个程序是根据回车换行来判断一个字符串的结束的,所以每次都把字符的个数存入BX,然后-2去掉最后一个换行.2.AX存放了N的值,也就是从BUFF开始到$总共占用的内存字节数.SUB AX,2被调用了,当程序检测到回车换行的时候就会调用这里.AX这里似乎没什么用.3.这段程...

一道汇编程序题中有地方不懂
对DL赋值为6,但是从来没有用过。要是想用dl与bl相加,把bx放到si中的话——之前bx又没有进行初始化。而且每判断一个字符以后,dl应该减1啊,也没有减。也许是题目太高深了,不是我所能理解的吧^_^ 不好意思,没能帮上忙。

汇编,。。题?有个不懂?
执行Test指令不会改变AL中的值

我是真的看不懂这个汇编语言的例题,帮帮忙解释下
MOV A,50H ;;把地址为50H存储单元的数送入累加器A,如果50H存储单元的数是30H,A 的内容当然是30H了 MOV A,R0;把R0中的数送入A中 如果R0是60H,A也变成60H MOV A,@R0;把R0所指的存储单元中的数送入A中,如果R0是60H,就是将60H单元的数放入A中,而不是将60H放入A中 ...

我已经学了王爽的汇编语言,怎么还是看不懂汇编语言写的小游戏代码,我还...
先从基本代码片段看起 数据传输 寻址 数学运算 字符处理 慢慢由简单到复杂 汇编一边肯定不能都看懂,因为别人写的代码,涉及到复杂算法的汇编代码看起来很费解的 循序渐进,由浅入深,在反复练习中逐渐理解才好。有些指令在大部分汇编教程中没有提到过,比如多媒体指令等,这些要找相关资料学习的 ...

如何快速看懂汇编语言程序?
首先得了解汇编指令吧,其次得用机器的逻辑思考问题,明白其中的存储、累加、判断、转移等概念。比如,1+2+...+100这样的问题,虽然我们可以给出公式计算,但机器并不知道,它只能知道,而且只能每次做一个加法,而且鉴于CPU的架构不能存所有的这些数值-如果这些数量不定的话更复杂,比如这些数是放在一...

关于汇编语言的问题,我看不懂程序
;子程序:用来打印回车和换行 \/\/*过程名 PROC[类型]...\/\/过程名 ENDP 其中过程名类型分为NEAR 和 FAR 2种 NEAR 段内调用 CS不变 只保护偏移地址(即IP入栈)FAR 段间调用 CS改变 保护断点地址 (CS和偏移地址IP入栈,CS在前IP在后 CRLF ENDP(子程序调用完)

汇编语言,这一题还是不懂什么意思
这一题主要是说明让你根据程序开始的CS与IP值 和每条指令的长度来计算实际跳转的偏移量以及计算跳转到的物理地址 前提假假设IP开始位置为0,CS=1000H XOR BX,BX [1字节]JMP SHORT NEXT [3字节]ADD AX,BX [2字节]MOV BX,AX[2字节]NEXT: MOV AX,1 然后根据计算公式,可以得出偏移地址和物理...

汇编,题。。不懂?
M\/(\/IO):低电平表示访问I\/O接口,高电平访问存储器 \/RD:低电平有效,表示CPU从存储器读数据 \/WR:低电平有效,表示CPU向存储器写数据 MOV AX,[BX]是把存储单元的值读入CPU的寄存器 所以是访问存储器,CPU读数据 M\/(\/IO):1 \/RD:0 \/WR:1 ...

相似回答
大家正在搜