星星电脑技术论坛's Archiver

gavin1344 发表于 2007-4-30 11:01

求助 语言问题

;*      请编制程序PROG1.ASM, 其功能是: 内存中连续存放着10个用%LE4@W9Sw
;*  ASCII码表示的十进制个位数,将它们转换成相应的二进制无符号
0s wI?9d{.U] ;*  字节N0, N1,…, N9, 并统计N0, N1,…, N9中大于等于5的十进制 L R"mDB
;*  数的个数n。转换结果按原序存放,之后存放n(n用字节表示)。2~$Vj9zo
;*      例如:
0d1{9q E,SaQ0y ;*      内存中有 30H('0'),39H('9'),31H('1'), …5t1x0]'n x1k7^
;*      结果为   00H,09H,01H,…,(后跟n,n为N0,N1,…, N9中大于
g i7c3|*cn ;*  等于5的十进制数的个数)j:Op)H;v/K?3[/c
;*      部分程序已给出,其中原始数据由过程LOAD从INPUT1.DAT文
]A'UA2D} c ;*  件中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始
tz;w#K h ;*  存放, 由过程SAVE保存到文件OUTPUT1.DAT中。
'Tx&EWS8j c2N ;*      填空BEGIN和END之间已给出的源程序使其完整 (空白已用横
6D@N?R2d5o4~ ;*  线标出,每行空白一般只需一条指令,但采用功能相当的多条指!aWi\,uf#jo$p|
;*  令亦可), 或删除BEGIN和END之间原有的代码并自行编程来完成
3KRo:@W(K ;*  要求的功能。S$d+]!N'u`7K
;*      对程序必须进行汇编,  并与IO.OBJ链接产生PROG1.EXE执行mIH/xN{
;*  文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。(EX9_%_n l3i$dY5o,w} ~
;*  调试中若发现整个程序中存在错误之处,请加以修改。3L|)N$O8Teo7x]]
          EXTRN      LOAD:FAR,SAVE:FAR{\%^K'sN] H)kl4G}5r
N         EQU         10s;n5nI\#{dLp
STAC      SEGMENT   STACK
}\:D;G`zJ*K            DB          128 DUP (?)9pG(D}:K? ] a]7l
STAC      ENDS             ZlI[u
DATA     SEGMENT         +^!n Ott6V0N.{%b
SOURCE   DB          N DUP(?))_ E;`X8\%BI,[(aO|
RESULT   DB          N+1 DUP(0)!? lt!gI@? A
NAME0    DB          'INPUT1.DAT',0
!c+oy^-z&h%im NAME1    DB          'OUTPUT1.DAT',0
\P0anz|:X;r DATA     ENDS              
d3auuVBx CODE     SEGMENT         
$T#AIvM!g Qu(c            ASSUME    CS:CODE,DS:DATA,SS:STAC
&sz'}~eRtY START     PROC       FARQ2mxz7FAb,}h
           PUSH       DS
a&N*Yq!O            XOR        AX,AX
%[^9wvR3wZ ZF            PUSH       AX
L(M]ni} @            MOV        AX,DATA
V,b`[ @%~r8R`,f            MOV        DS,AX
/XS4M6n/iw;x$qE            LEA        DX,SOURCE        ; 数据区起始地址
'YG#G%i3oWC_4{3_$b/|            LEA        SI,NAME0         ; 原始数据文件名
3VE7u Y5} Q            MOV        CX,N             ; 字节数4x \Y1]UXd \d(x;s
           CALL       LOAD             ; 从'INPUT1.DAT'中读取数据
+K k$|-Kzod ;  **** BEGIN ****             m?W7aX3dI7{.Q
           MOV        DI,OFFSET RESULT
5NU0i5nU1mEs            MOV        BX,0(ttXS{2V5B;\h
           MOV        CX,N
;q'\\2hW{TZ%V;V9c            
o'|#^&LS            MOV        DL,__ W)iS0GvYSs9r;u?
PRO:       MOV        AL,[BX]:l1ineq THA
           +@"s)g Bc[T/{
           SUB        AL,___8}G8d?#d_j
           CMP        AL,05+F5H,r5b(ou~+I
            J BL9{s%y-WkP$XA
           __         JUMP              ; 小于5
g}Zc/`j7z/w            INC        __                ; 大于等于5
Blv~q7H JUMP:      MOV        [DI],AL:|HhP'V:{)tC
           INC        BX
0}(B }/EU/VR            INC        DItA^3TK"f
           DEC        CXpDyQ1Wb8a*U
           JNZ        PRO
?&HN c-I"W*v            Q+U"wjp
           _______________I(P#NIE]
;  ****  END  ****3q#M"f}6XB{3M?
           LEA        DX,RESULT        ; 结果数据区首址@9i2a%dN |^+O
           LEA        SI,NAME1         ; 结果文件名
(mA"U"bT5v'b            MOV        CX,N+1           ; 结果字节数nb;o\s vl\@
           CALL       SAVE             ; 保存结果到文件
Yr"zW9Y5_@          RET
/H:Z:N7[2A"D@n4a~ START    ENDPyzw7E:~ uCe!Cg3g
CODE     ENDSh%J k |_s
END      STARTj]V+lE&N9gM$k?5i
Z+F7u;Z ]W[

&}Zf%uFU qk'hR%R }!|HY6c

'ie2i:^0w&usk s
~WH m7a(y cKF.OUr%I {
怎么改啊~~~~~~~~~~~~~~~

secret 发表于 2007-4-30 11:22

这个东东,偶也无难为力!

dead_man 发表于 2007-4-30 11:44

MOV      DL,?(不清楚)
2Y5Zzg6b T0~-} SUB        AL,30
pN)T/G1sB5s9Bj JMP       JUMP
\+M-m FM C$woD INC        BXh r6~1BWI0xxX
zt3D2Z#g(ke
汇编没怎么接触过,都是猜的....而且机子上也没汇编器.

a283015123 发表于 2008-5-27 23:06

来点儿新鲜点的吧.呵呵建议

*** 作者被禁止或删除 内容自动屏蔽 ***

收广告位 发表于 2008-5-30 21:48

s

*** 作者被禁止或删除 内容自动屏蔽 ***

页: [1]
手机号码所在地查询:
Google
IP地址:

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.