发新话题
打印

求助 语言问题

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

求助 语言问题

;*      请编制程序PROG1.ASM, 其功能是: 内存中连续存放着10个用- @: d8 P! x8 o3 _
;*  ASCII码表示的十进制个位数,将它们转换成相应的二进制无符号
1 @; v* K  t7 o  X" B1 y( d! W2 R: k;*  字节N0, N1,…, N9, 并统计N0, N1,…, N9中大于等于5的十进制/ P- v; ?. i5 l2 ^, w1 h
;*  数的个数n。转换结果按原序存放,之后存放n(n用字节表示)。6 t+ L% e) F* E6 I2 v* F$ |& N8 i
;*      例如:" d0 O  t% G6 `: c0 Q% `
;*      内存中有 30H('0'),39H('9'),31H('1'), …# G! `* K; B% [! m' y8 {
;*      结果为   00H,09H,01H,…,(后跟n,n为N0,N1,…, N9中大于
; P. w% i1 z2 U  c1 G;*  等于5的十进制数的个数)/ Y; H8 B$ K* X& L' o
;*      部分程序已给出,其中原始数据由过程LOAD从INPUT1.DAT文" _$ P6 q) {$ R* O) f
;*  件中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始
' q1 J  _% Y& y/ R6 b;*  存放, 由过程SAVE保存到文件OUTPUT1.DAT中。: ]/ B" b1 Z; D1 ^  O
;*      填空BEGIN和END之间已给出的源程序使其完整 (空白已用横
& W) x$ k( |$ Y& u, M' p;*  线标出,每行空白一般只需一条指令,但采用功能相当的多条指( P& d1 F* H6 y& Z/ N8 }
;*  令亦可), 或删除BEGIN和END之间原有的代码并自行编程来完成
1 r+ Z  b) K2 q5 P0 R;*  要求的功能。3 g, A, Q9 x9 a$ H/ J& J9 }
;*      对程序必须进行汇编,  并与IO.OBJ链接产生PROG1.EXE执行
# Y5 n6 p  n  m;*  文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。
6 g1 B# n) O( _# o( B0 \+ Q( ]1 U;*  调试中若发现整个程序中存在错误之处,请加以修改。) e2 a: d1 n; {2 z
          EXTRN      LOAD:FAR,SAVE:FAR) i/ U: b* t% Y& X1 x8 C% M6 L8 j0 h9 p
N         EQU         10) w% Q" Y! T0 |/ k6 H
STAC      SEGMENT   STACK9 |8 ]! u; y$ W: X1 S" T. O% M
           DB          128 DUP (?)
0 ^  }% ]3 _) N$ k0 mSTAC      ENDS             7 `5 W7 A! z2 c$ j6 c+ v) S0 R! o$ P6 m
DATA     SEGMENT         
3 `  l$ _$ _4 _2 WSOURCE   DB          N DUP(?)2 R4 o3 g% A: x) Y% w
RESULT   DB          N+1 DUP(0)
+ z1 I4 `, L& h1 ^& ~2 }- n/ q5 H* |NAME0    DB          'INPUT1.DAT',07 G* N1 D# {* ?* E+ g; P9 e! H) E
NAME1    DB          'OUTPUT1.DAT',0$ n5 q* a+ y3 k% p0 M' p' Z1 H
DATA     ENDS              
+ }; f, w. ~9 `1 n6 H+ h0 x. XCODE     SEGMENT          8 l# }& I# u: M' H' m. }& L3 D
           ASSUME    CS:CODE,DSATA,SS:STAC( z: F' U, u1 f7 u" H8 T' f
START     PROC       FAR+ h0 }' X! `, Y  S# |3 k4 w$ W
           PUSH       DS
1 S+ B; Y* h7 e           XOR        AX,AX6 X: ?# p8 p) u* ?) q) M5 f6 s
           PUSH       AX0 H! S# Y) {! O' i4 a
           MOV        AX,DATA" B- I, s- c$ g4 t' V4 F! O) z0 B. }* i
           MOV        DS,AX
, T# K- s7 d* t+ q           LEA        DX,SOURCE        ; 数据区起始地址, [7 {, N1 x8 H) E+ ~, r% |
           LEA        SI,NAME0         ; 原始数据文件名
$ {# X9 S$ @8 C" l/ S           MOV        CX,N             ; 字节数
# T+ j9 N! F8 U0 n8 ]2 k* p           CALL       LOAD             ; 从'INPUT1.DAT'中读取数据
8 S$ X. ]2 K+ w, A; Y5 p8 n; N;  **** BEGIN ****            
) ?) U4 m6 ?7 h% N6 y2 {           MOV        DI,OFFSET RESULT, Y! i$ ~7 D. K1 @/ ^
           MOV        BX,0
6 K* J& m3 N5 o2 i- U           MOV        CX,N
- m1 L; T9 P( M; G6 y           
5 v; y* [$ B" a  g; d) N+ M3 e           MOV        DL,__
+ T* I* e( a2 u% w# x% U' QPRO:       MOV        AL,[BX]
" W) @- g  J9 n, b% r9 }           
' u4 Y. U$ y" B, f* Q  Y& M           SUB        AL,___
3 d9 ^" z, e0 H4 L& S; h4 r           CMP        AL,05
4 j. G2 v- s- E& L) O! L8 C2 R           
' D* U$ \, v' T- S           __         JUMP              ; 小于5' S9 Q6 E; ^: N; B/ [
           INC        __                ; 大于等于5
# G2 Y. N1 q7 R+ E7 d7 u2 E, lJUMP:      MOV        [DI],AL4 j8 J  `6 F5 l& E% p4 h9 z; ]
           INC        BX7 M' V5 w+ E/ v- q+ \8 L
           INC        DI
) l1 S3 g) Z2 C$ a! l( L2 F           DEC        CX" ~7 T) J) c4 G* j1 d2 g) I
           JNZ        PRO
; ^6 {- c. o- F1 ~0 _4 @           , \* s' ^# Z/ ^  I6 Y2 y- m. E
           _______________+ z. r9 e* D& J% E& i7 O
;  ****  END  ****
' c& f2 M) [0 m, V3 |6 Z5 P/ _           LEA        DX,RESULT        ; 结果数据区首址
( w4 {# {- _4 w! j           LEA        SI,NAME1         ; 结果文件名, L) h& K2 D- D+ ?2 J5 {: E
           MOV        CX,N+1           ; 结果字节数
+ m, U" `" h. I           CALL       SAVE             ; 保存结果到文件- V1 \( R. G& f. x, e, d
         RET7 {" Y8 K/ g5 R
START    ENDP" P( q% m5 A$ [2 O5 i8 X; W
CODE     ENDS
! ?( g1 t6 l- e: [END      START
* F( {" G; R* h4 ~" p/ c* ]" P0 h( G: E+ `5 P5 u

$ D3 T6 d& p4 |$ K
- I- H# Y2 A9 s' _! Z  y  ?" M9 P. P8 A! A1 T
7 s! L, e2 V! @+ S5 }

3 `' ^( F4 s2 d* B* l9 C怎么改啊~~~~~~~~~~~~~~~

TOP

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

TOP

MOV      DL,?(不清楚)
6 Z/ `5 v) @% l, x) SSUB        AL,30& c+ Y6 _0 l5 F& t: p
JMP       JUMP# [' w, g( t0 o
INC        BX
) Q0 l/ _8 U0 |
. g& h$ u6 j; |4 N, ~; Y汇编没怎么接触过,都是猜的....而且机子上也没汇编器.
C++苦手

TOP

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

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

TOP

s

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

TOP

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