发新话题
打印

求助 语言问题

本主题由 admin 于 2008-5-16 00:41 提升

求助 语言问题

;*      请编制程序PROG1.ASM, 其功能是: 内存中连续存放着10个用
/ C9 |) p. A3 _+ s) K- t;*  ASCII码表示的十进制个位数,将它们转换成相应的二进制无符号
9 f; N9 P3 q; J0 T' e" x;*  字节N0, N1,…, N9, 并统计N0, N1,…, N9中大于等于5的十进制
9 l! a: m* k6 C$ e$ j+ p: q8 g;*  数的个数n。转换结果按原序存放,之后存放n(n用字节表示)。
( i) x6 b  h" F" g  z. K;*      例如:9 L2 L" |1 K! u& q
;*      内存中有 30H('0'),39H('9'),31H('1'), …
, B( N1 ^  w6 n% }- T;*      结果为   00H,09H,01H,…,(后跟n,n为N0,N1,…, N9中大于
, v+ z9 t# w! i;*  等于5的十进制数的个数)
9 `& z' _& q# U) z;*      部分程序已给出,其中原始数据由过程LOAD从INPUT1.DAT文9 Q9 ]- t  I; a2 y1 l
;*  件中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始( E7 _/ b$ @; u/ ~4 }, v; t
;*  存放, 由过程SAVE保存到文件OUTPUT1.DAT中。* x" a4 D; a. }( m
;*      填空BEGIN和END之间已给出的源程序使其完整 (空白已用横
$ v/ Z1 A9 A) T;*  线标出,每行空白一般只需一条指令,但采用功能相当的多条指
; L2 \# i1 c( @4 b;*  令亦可), 或删除BEGIN和END之间原有的代码并自行编程来完成
( `9 D/ \8 t1 p9 b0 R' o6 @/ z/ G;*  要求的功能。! x  ~% e" @6 {4 S% B5 i7 J
;*      对程序必须进行汇编,  并与IO.OBJ链接产生PROG1.EXE执行* g# B# P+ T5 [0 q* c" s
;*  文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。9 p# X  Y4 G4 e- o4 I/ G6 V; I7 C/ r
;*  调试中若发现整个程序中存在错误之处,请加以修改。
6 s) T3 j# [7 }5 A9 y          EXTRN      LOAD:FAR,SAVE:FAR5 y0 H  E. S4 c. R! h( R
N         EQU         10  i5 |9 a+ v& o; ?3 I
STAC      SEGMENT   STACK
/ \& S2 y1 V1 k6 r           DB          128 DUP (?)9 i" n* ]8 l* B$ b" l" O* ?) Y  k
STAC      ENDS            
. W% e% b: c9 R5 g/ E: ~# R  HDATA     SEGMENT         
( g  p# B, H' e% S* FSOURCE   DB          N DUP(?)
- b3 z# o- C' j) VRESULT   DB          N+1 DUP(0)& z3 D+ _; T% \7 l" u. X) u
NAME0    DB          'INPUT1.DAT',0
& e& _( m5 t  _0 f# j2 Q( l2 \2 I4 `NAME1    DB          'OUTPUT1.DAT',0
/ P6 T' E9 b2 R: Q, N9 N8 p. RDATA     ENDS              " f' Y% l  J: y6 M& T1 S( i) a
CODE     SEGMENT          ; i6 c) ]5 Q! S
           ASSUME    CS:CODE,DSATA,SS:STAC; n6 M: V& w4 i! R1 h$ E8 x
START     PROC       FAR9 {0 @* m- [+ O: N& S5 k
           PUSH       DS: ^. O: [( t; r7 l4 T+ a
           XOR        AX,AX
0 j4 c9 e, d6 u( N1 L           PUSH       AX
+ T" x) k) o# E. b# z2 c           MOV        AX,DATA
: d6 `2 @% R1 \' l! T3 L9 n           MOV        DS,AX" i& `2 B+ L) C. k7 o& E3 I, @
           LEA        DX,SOURCE        ; 数据区起始地址+ L8 \$ w! T8 k2 s- L: s" Q
           LEA        SI,NAME0         ; 原始数据文件名# t3 J! W2 a5 x8 b6 Q7 e
           MOV        CX,N             ; 字节数
8 b6 B& r" G9 ^" G1 M. d           CALL       LOAD             ; 从'INPUT1.DAT'中读取数据
$ j1 e, i, p' F; b% R) _4 o5 z;  **** BEGIN ****            
7 q5 }9 Q* {$ x) ^! ~4 v           MOV        DI,OFFSET RESULT
6 {, o5 p# [( ]# X  v           MOV        BX,0
+ q9 p# @( }3 Q1 X           MOV        CX,N
& ^1 P$ s1 A3 O- a: K           7 p7 X& W8 E3 x- t. w" n
           MOV        DL,__
- i0 U  o. X  B0 QPRO:       MOV        AL,[BX]
8 j: S3 N8 b  O$ h3 ^- U7 M4 w           , r9 D0 P* `' o) F8 E$ c2 v
           SUB        AL,___
7 {* M  ]3 @8 `           CMP        AL,058 U/ U/ l) p3 V. ^6 _6 k
           
7 Z) J+ l) J' T9 h) ?           __         JUMP              ; 小于5) Z2 _% m9 T9 W
           INC        __                ; 大于等于5
9 P+ o9 P/ S% ~3 R; }JUMP:      MOV        [DI],AL+ e0 o, V/ U5 z# J
           INC        BX
; d0 j$ t6 ?4 M7 M+ t" L8 ^% b2 M           INC        DI
* p1 G7 M' u' ]6 m7 o           DEC        CX1 m: B2 f. }4 W9 |2 t
           JNZ        PRO
9 r' U$ Q& t% \8 ^# z           
! m* M6 \# \- C. l* W/ S           _______________, I2 b* o' l/ F3 E, L0 C: S% N. l  x8 A
;  ****  END  ****6 k% K/ |$ @8 ]! I" [6 z
           LEA        DX,RESULT        ; 结果数据区首址
: Z6 z  r, {; B2 g           LEA        SI,NAME1         ; 结果文件名
! H. E3 ~7 [+ \           MOV        CX,N+1           ; 结果字节数
& J' c, R. A9 m9 S8 R/ i           CALL       SAVE             ; 保存结果到文件
" s+ W, a) [7 b0 t9 @% E         RET* e; _  L) {' B4 A
START    ENDP0 [0 O5 L; U5 L' H  f  ^5 P9 p1 U. J
CODE     ENDS
8 k, Q3 K1 R( a% L4 h/ LEND      START
, {. e# G- c, W* a, E
, g$ N% u3 M6 I) s/ G. _9 m0 ~' D6 N" _! Z

7 t# z1 K, j! \- @" ?3 ]
. b: ~% M2 {3 g$ I3 r5 _. ^& S. k+ y1 \4 r

5 _, A1 c# ?/ G: D6 s% {" M8 E怎么改啊~~~~~~~~~~~~~~~

TOP

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

TOP

MOV      DL,?(不清楚)
; L7 T" d. ~1 [+ }( mSUB        AL,30
+ R' Z5 u3 F1 X$ W& \( sJMP       JUMP
" L$ V3 e7 w8 \2 Y( tINC        BX6 R* h6 Y# J# m) w

' j# H/ y) f) ?+ N0 d; D汇编没怎么接触过,都是猜的....而且机子上也没汇编器.
C++苦手

TOP

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

提示: 作者被禁止或删除 内容自动屏蔽

TOP

s

提示: 作者被禁止或删除 内容自动屏蔽

TOP

发新话题
手机号码所在地查询:
Google
IP地址: