汇编,求一个一加到一百的程序,要求每句都有详细注释。重要是注释,要在未来汇编上能编译。
补充:不要省略任何语句呀??我需要一个完整程序并有详细注释?最好如每个语句作用都有
追问:木有注释??还有,这样能直接得到??不要省略呀??我需要一个完整程序并有详细注释我们现在上汇编好蛋疼,完全不懂就做这些题。注释灰常需要。比如 segment,为什么?然后这21h有是怎样输出什么的??完全不懂的撒?
答案:ASSUME CS:CODE
CODE SEGMENT
START: //这是代码定义格式,通用的。不用管
MOV DX,0 //初始化dx
MOV BX,1 //从1开始加
MOV CX,100 //cx 相当于计数器
S:
ADD DX,BX //相当于dx=dx+bx
INC BX //每次bx加1,相当于bx=bx+1
LOOP S //循环S,上面是整个循环体
MOV AX,4C00H
INT 21H //这是固定的
CODE ENDS //结束程序
END START
最后结果保存在DX里了 ,这太简单了,不需要再解释了吧
其他:xor ecx,ecx
mov eax,64h
.while eax==0
add ecx,eax
dec eax
.endw
ECX是你要的结果 assume cs:code
code segment
start:
mov dx,0
mov bx,1
mov cx,100
s:
add dx,bx
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
结果帮你保存到dx里了
程序非常简单,应该不需要任何注释了 看书慢慢领悟 参考一下:
http://hi.zhaoxi.net/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/5feeaf616e6828c68cb10ddf.html ORG 0000H //这个就不用解释了吧?
SJMP MAIN //跳转到主程序
ORG 0030H
MAIN: //主程序开始
MOV A,#0; //ACC寄存器清零
LOOP: //
INC A; //ACC寄存器加一
CJNE A,#100,LOOP; //判断ACC是否等于100,若不等于就跳转到LOOP,等于就顺序执行
END //程序结束
上一个:汇编语言中03B进栈后为什么变成0FF3B啊?
下一个:关于Win32汇编的问题?