实验七
先吧代码贴出来吧:花了半个晚上,感觉头昏昏的,看到这题的时候还有点思路,但还不清晰,,,嗯,本着自己动手的精神,坚持下来写出代码,忘朋友们指点小弟哈啊~ 看看有什么问题,苦恼中程序代码如下:
assume cs:codesg,ds:data,es:table
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590821,803530,1183000,1843000,2759000,3753000,4649000,5937000
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
data ends
table segment
db 21 dup ('year summ ne ?? ')
table ends
codesg segment
start: mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov bx,0
mov si,0
S1: mov cx,21
mov dx,cx
s: mov al,ds:
mov es:,al
inc si
mov cx,4
loop s
r: mov ax,ds:
mov es:,ax
add si,2
mov cx,2
loop r
mov ax,ds:
mov es:,ax
mov ax,ds:
mov dx,ds:
div word ptr ds:
mov es:,ax
add bx,16
mov cx,dx
loop S1
codesg ends
endstart
写完后运行程序,发现程序进入死循环了,单步调试发现到第一个循环的“loop s"的时候就没反应了,估计进入死循环了吧。。。可能还有其它的问题什么的。。。可是夜深了,捣鼓了一下看不早了,头昏眼花了也,就上炕了,呵呵。。 现在发出来,忘指点下啊,,先谢谢了!!!
S1: mov cx,21
mov dx,cx
s: mov al,ds:
mov es:,al
inc si
mov cx,4
loop s
这些你是想要把年份分21次输入并连续4次输入可从第二行就有问题 bx =变量 cx =循环次数关键你先看懂loop 指令是什么意思 LOOP s 指令 执行下面两部1 . cx=cx-1 2.检测CX是否为0 如果CX=0 则程序向下执行,否则跳到 S 处执行
后面错误还很多 自己慢慢再看,再看下去 :funk: 我也晕了 把“S1: mov cx,21”里的“ mov cx,21”放到循环外面就行了 小马过河 发表于 2012-1-18 17:06 static/image/common/back.gif
S1: mov cx,21
mov dx,cx
s: mov al,ds:
恩,我好像有点明白了,可是这里到底怎么该才能继续进行下去呢?{:5_94:}
页:
[1]