给下1+2+3+4.。。+100 用汇编怎么写吧
我试试着做个就是1+2+3+。。。+100=?请各位大大给个写的,让我 看下,我写的怎么都感觉不太对的样子。还有就是怎么查看结果。就是加到100时等于多少,让我一下查到,就知道写错了没有。把你写的拿出来看看 >>就是怎么查看结果。让我一下查到,就知道写错了没有。
debug有一个g指令可以让程序执行到你想要的地方停下来
先用u(直接回车),可以查看程序中指令的ip,
然後用g <你想停下来的指令的ip>
假设u的结果如下 (只是举例,cs,ip数值以实际为准)
0bbf:0010
0bbf:0012 mov ax,4c00H <---计算完毕,准备返回DOS了
输入g 12 (回车)
程序就直接执行到ip为0012处的地方停下
>>我写的怎么都感觉不太对的样子
1加到100结果以16进制表示为13BAh,10进制是5050.
1加到100需要什麽? 新结果=旧结果+变数 这样的指令循环100次
(1=0+1, 3=1+2, 6=3+3....5050=4950+100)
提示:可以用cx寄存器存循环次数,每次循环把数字加到ax寄存器. assume cs:codecs,ds:num
num segment
dw 0
num ends
codecs segment
start:
mov ax,num
mov ds,ax
mov bx,1
mov cx,100
s:
add num:0,bx
inc bx
loop s
mov ax,4c00H
int 21H
codecs ends
end start (num:0) = 5050 看不明白啊,还有那么多东西,不过我想这几天就能看的明白,谢谢上面的大大。 本帖最后由 lsgo 于 2011-9-19 20:25 编辑
assume cs:codesg
codesg segment
mov ax,0 // AX = 0
mov bx,1 // BX = 1
mov cx,100 // CX = 100 《循环次数为100 如果 AX=1 BX=2 则循环次数为99》
s:add ax,bx //AX = AX + bx 也就是 AX = 0 + 1
inc bx //BX = BX + 1 BX = 1 + 1
loop s //跳转至 ADD AX,BX 处进行循环 循环次数为 CX 中的值
mov ax,4c00h //当 CX = 0 时跳转至此 AX=13BA 十进制为 5050 也就是1+2+3..+100的和
int 21h
codesg ends
end
//表达能力有限 带来的不便请见谅 谢谢。我会好好看的。 {:5_100:} 自己动手写一下。。。 回头去试试。 assume cs:code
code segment
start: mov ax,0
mov bx,1
mov cx,100
s: add ax,bx
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start 如果这个程序写完,用debug来调试的话, 要按--t 100次啊 那不累死了啊。有个软件就直接得出结果的。 如果非要加的话,就改成10次吧,这样好点吧。反正道理都是一样的!
页:
[1]