刚学问个很菜的问题 实验五第五个程序
assume cs:codea segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
d segment
db 0,0,0,0,0,0,0,0
d ends
code segment
start:mov cx,8h
s:mov ax,a
mov ds,ax
mov bx,0
mov al,ds:
mov ax,b
mov ds,ax
add al,ds:
mov ax,d
mov ds,ax
mov ds:,al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
这个 咋回事?对么?哪里错了?? 这是实验七 貌似也不对呢 还是不知道哪里错了
assume cs:code,ds:datasg,es:table,ss:stack
datasg 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,590827,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
datasg ends
table segment
db 21 dup('year summ ne ??')
table ends
stack segment
dw 0,0,0,0
stack ends
code segment
start: mov ax,datasg
mov ds,ax
mov ax,table
mov es,ax
mov ax,stack
mov ss,ax
mov di,0
mov si,0
s1: mov cx,21
push cx
mov bx,0
mov cx,2
s: mov ax,ds:
mov es:,ax
mov ax,ds:
mov es:,ax
add bx,2
loop s
mov ax,ds:
mov es:,ax
mov ax,ds:
mov dx,ds:
mov bx,ds:
div word ptr bx
mov es:,ax
add di,4
add si,16
pop cx
loop s1
mov ax,4c00h
int 21h
code ends
end start 提示我个划分溢出,么意思。 还有人均收入除法那里换成
mov ax,es:
mov dx,es:
mov bx,es:
行么?? start:mov cx,8h
s:mov ax,a
mov ds,ax
mov bx,0
mov al,ds:
mov ax,b
mov ds,ax
add al,ds:
mov ax,d
mov ds,ax
mov ds:,al
inc bx
loop s
注意红色al,下面那一步的ax, 你又用b给赋值了,很明显,b赋值给ax后,同时改变了al和ah,再到add那一步你还认为al还是原先那个值01是不可能,其实al现在已经是b这个段地址的低位部分,所以产生根本性的错误,其实段寄存器何必死磕一个ds?好歹也有四个,cs,ds,ss,es,虽说ss通常是保存栈的段地址的,但这里又用不到栈,而上面数据段又正好3段,干脆取巧一下。将ds,ss,es全用了,下面是我的代码和标准答案不一样,你看一下:
assume cs: codesg
a segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
d segment
db 8 dup (0)
d ends
codesg segment
start:
mov ax, d
mov es, ax
mov ax, b
mov ss, ax
mov ax, a
mov ds, ax
mov bx, 0
mov cx, 4
s:mov ax,
add ax, ss:
mov es:, ax
add bx, 2
loop s
mov ax, 4c00h
int 21h
codesg ends
end start
这是debug通过查看正确的。OK
无限幻想 发表于 2012-11-8 18:31 static/image/common/back.gif
start:mov cx,8h
s:mov ax,a
mov ds,ax
原来是这样啊。对哦,谢谢了。钻晕了我。
页:
[1]