|
主题 : : 【实验7】为什么你们最后的结果,都只把年份弄对了,而收入、员工数目、人均收入都没有弄进去呢? [待解决] |
回复[ 5次 ]
点击[ 435次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2012-05-29 22:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-04-12 21:25 |
1.为什么只复制了年份(而且前面一个1 没有复制进来),其他的没有复制进来???
另外,-ds:0 查看data段,定义的那些数据(出来年份以外),怎么也没有显示出来?
我看到别人做的实验,好多也是这样的错误 》
如下:
1476:00AA 8946F8 MOV [BP-08],AX
-g a1
AX=016F BX=0000 CX=0000 DX=1888 SP=0010 BP=0150 SI=00D2 DI=0005
DS=1453 ES=1461 SS=0020 CS=1476 IP=00A1 NV UP EI PL NZ NA PE NC
1476:00A1 B8004C MOV AX,4C00
-d es:0
1461:0000 31 39 37 35 20 10 00 00-00 20 03 00 20 3F 3F 00 1975 .... .. ??.
1461:0010 00 39 37 36 20 16 00 00-00 20 07 00 20 3F 3F 00 .976 .... .. ??.
1461:0020 00 39 37 37 20 7E 01 00-00 20 09 00 20 3F 3F 00 .977 ~... .. ??.
1461:0030 00 39 37 38 20 4C 05 00-00 20 0D 00 20 3F 3F 00 .978 L... .. ??.
1461:0040 00 39 37 39 20 56 09 00-00 20 1C 00 20 3F 3F 00 .979 V... .. ??.
1461:0050 00 39 38 30 20 40 1F 00-00 20 26 00 20 3F 3F 00 .980 @... &. ??.
1461:0060 00 39 38 31 20 80 3E 00-00 20 82 00 20 3F 3F 00 .981 .>.. .. ??.
1461:0070 00 39 38 32 20 A6 5F 00-00 20 DC 00 20 3F 3F 01 .982 ._.. .. ??.
-d ds:0
1453:0000 31 39 37 35 31 39 37 36-31 39 37 37 31 39 37 38 1975197619771978
1453:0010 31 39 37 39 31 39 38 30-31 39 38 31 31 39 38 32 1979198019811982
1453:0020 31 39 38 33 31 39 38 34-31 39 38 35 31 39 38 36 1983198419851986
1453:0030 31 39 38 37 31 39 38 38-31 39 38 39 31 39 39 30 1987198819891990
1453:0040 31 39 39 31 31 39 39 32-31 39 39 33 31 39 39 34 1991199219931994
1453:0050 31 39 39 35 10 00 00 00-16 00 00 00 7E 01 00 00 1995........~...
1453:0060 4C 05 00 00 56 09 00 00-40 1F 00 00 80 3E 00 00 L...V...@....>..
1453:0070 A6 5F 00 00 91 C3 00 00-C7 7C 01 00 81 24 02 00 ._.......|...$..
- | | |
|
|
|
|
[第1楼]
[ 回复时间:2012-05-29 22:35 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-04-12 21:25 |
忘记贴代码了,
assume cs:code,ds:data,es:table
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982'
db '1983','1984','1985','1986','1987','1988','1989','1990'
db '1991','1992','1993','1994','1995'
dd 16, 22, 382, 1356, 2390, 8000, 16000, 24486
dd 50065, 97479, 140417, 197514,345980,590827,803530,1183000
dd 1843000,2759000,3753000,4649000,5937000
dw 3, 7, 9, 13, 28, 38, 130, 220
dw 476,778,1001,1442,2258,2793,4037,5635
dw 8226,11542,14430,15257,17800
data ends
table segment
db 21 dup('year summ ne ?? ')
table ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov ax,0020h
mov ss,ax
mov sp,10h
mov bp,0
mov di,0
mov bx,0
mov si,0
mov cx,21
s2:
push cx
mov cx,4
s1:
mov al,ds:[bx+si]
mov es:[bp+di],al
inc si
inc di
loop s1
pop cx
add bp,16
mov di,0
loop s2
mov bp,0
mov di,5
mov bx,0
mov cx,21
s4:
push cx
mov cx,4
s3:
mov al,ds:[bx+si]
mov es:[bp+di],al
inc si
inc di
loop s3
pop cx
add bp,16
mov di,5
loop s4
mov bp,0
mov di,0ah
mov bx,0
mov cx,21
s6:
push cx
mov cx,2
s5:
mov al,ds:[bx+si]
mov es:[bp+di],al
inc si
inc di
loop s5
pop cx
add bp,16
mov di,0ah
loop s6
mov di,5
mov bp,0
mov cx,21
s7:
mov ax,es:[bp+di]
add di,2
mov dx,es:[bp+di]
add di,5
div word ptr es:[bp+di]
add di,3
mov es:[bp+di],ax
add bp,16
mov di,5
loop s7
mov ax,4c00h
int 21
code ends
end start
注:前面3个循环是复制用的,后面一个是计算平均收入! | | |
|
|
|
|
[第2楼]
[ 回复时间:2012-05-30 11:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:1
注册日期:2008-09-04 16:35 |
注意年份的数据跟其它的数据的区别。。
年份加引号了。
其它数据,是16进制的。计算的结果也是16进制的,需要再转换下。
1461:0000 31 39 37 35 20 10 00 00-00 20 03 00 20 3F 3F 00 1975 .... .. ??.
1461:0010 00 39 37 36 20 16 00 00-00 20 07 00 20 3F 3F 00 .976 .... .. ??.
1976 这个数据的1没复制,源程序中有错误的哦。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2012-07-20 22:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:1
注册日期:2012-04-23 22:44 |
我和楼主遇到的问题一样,只有把年份复制了,其它没有复制成功,纠结 | | |
|
|
|
|
[第4楼]
[ 回复时间:2012-08-18 20:43 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-08-13 19:06 |
mov ax,0020h
mov ss,ax
mov sp,10h
你没有定义栈段!就直接用栈了,为什么用0020h? | | |
|
|
|
|
[第5楼]
[ 回复时间:2012-10-28 01:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-09-16 00:19 |
回复:[第4楼]
------------------
什么定义栈段只是形式上的罢了,在内存中也根本没有分段的,分段我们自己和CPU的安排。
还有啊,楼主,这个实验最主要是考验我们对结构化的数据进行处理的能力。
可以把实验7中的table 看成是一个结构体数组。简单说就是一个数组每个元素是一个结构体。
一个循环就足够了,一个循环代表填充这整个数组,而每次循环代表要填充完这个数组中一个结构体中的元素。
给你看看我写的吧 ,参考参考
mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov bp,0
mov bx,0
mov di,0
mov cx,21
s:
mov si,0
mov ax,0[bp+si]
mov es:[bx][0],ax
add si,2
mov ax,0[bp+si]
mov es:[bx][2],ax
;输入年份
mov byte ptr es:[bx][4],' ' ;添加空格
mov si,0
mov ax,84[bp+si]
mov es:[bx][5],ax
add si,2
mov dx,84[bp+si]
mov es:[bx][7],dx
;输入收入总数
mov byte ptr es:[bx][9],' ' ;添加空格
div word ptr 168[di] ; 计算人均收入
mov dx,168[di]
mov es:[bx][10],dx
;输入雇员数
mov byte ptr es:[bx][12],' ' ;添加空格
mov es:[bx][13],ax
;输入人均收入
mov byte ptr es:[bx][15],' ' ;添加空格
add bp,4
add bx,16
add di,2
loop s | | |
|