編考 實(shí)驗(yàn) 題答案_第1頁
編考 實(shí)驗(yàn) 題答案_第2頁
編考 實(shí)驗(yàn) 題答案_第3頁
編考 實(shí)驗(yàn) 題答案_第4頁
編考 實(shí)驗(yàn) 題答案_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1

DATASEGMENT

BUFDB0FFH

DB?

DB0FFHDUP(?)

ANSDB0DH,0AH,0FDHDUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:

MOVAX,DATA

MOVDS,AX

LEADX,BUF

MOVAH,0AH

INT21H

LEASI,BUF[2]

MOVAL,BUF[1]

XORAH,AH

ADDSI,AX

DECSI

LEADI,ANS[2]

XORCH,CH

MOVCL,BUF[1]

AGAIN:

MOVAL,[SI]

MOV[DI],AL

DECSI

INCDI

LOOPAGAIN

MOVBYTEPTR[DI],'$'

LEADX,ANS

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2

DATASEGMENT

BUFDB0FFH

DB?

DB0FFHDUP(?)

STROUTDB0DH,0AH,'A=000'

DB0DH,0AH,'SPACE=000','$'

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:

MOVAX,DATA

MOVDS,AX

LEADX,BUF

MOVAH,0AH

INT21H

LEASI,BUF[2]

MOVCL,BUF[1]

XORCH,CH

AGAIN:

CMPBYTEPTR[SI],'A'

JNENOTA

CMPSTROUT[10],'9'

JEATEN

INCSTROUT[10]

JMPNEXT

ATEN:

CMPSTROUT[9],'9'

JEAHUN

MOVSTROUT[10],'0'

INCSTROUT[9]

JMPNEXT

AHUN:

MOVSTROUT[10],'0'

MOVSTROUT[9],'0'

INCSTROUT[8]

JMPNEXT

NOTA:

CMPBYTEPTR[SI],''

JNENOTSPACE

CMPSTROUT[21],'9'

JESPACETEN

INCSTROUT[21]

JMPNEXT

SPACETEN:

CMPSTROUT[20],'9'

JESPACEHUN

MOVSTROUT[21],'0'

INCSTROUT[20]

JMPNEXT

SPACEHUN:

MOVSTROUT[21],'0'

MOVSTROUT[20],'0'

INCSTROUT[19]

NOTSPACE:

NEXT:

INCSI

LOOPAGAIN

LEADX,STROUT

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3

DATASEGMENT

BUFDB0FFH

DB?

DB0FFHDUP(?)

STROUTDB0DH,0AH,0FDHDUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:

MOVAX,DATA

MOVDS,AX

LEADX,BUF

MOVAH,0AH

INT21H

LEASI,BUF[2]

LEADI,STROUT[2]

MOVCL,BUF[1]

XORCH,CH

AGAIN:

CMPBYTEPTR[SI],''

JESPACE

MOVAL,[SI]

MOV[DI],AL

INCDI

SPACE:

INCSI

LOOPAGAIN

MOVBYTEPTR[DI],'$'

LEADX,STROUT

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

4

DATASEGMENT

BUFDB0FFH

DB?

DB0FFHDUP(?)

STROUTDB0DH,0AH,0FDHDUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:

MOVAX,DATA

MOVDS,AX

LEADX,BUF

MOVAH,0AH

INT21H

LEASI,BUF[2]

LEADI,STROUT[2]

MOVCL,BUF[1]

XORCH,CH

AGAIN:

CMPBYTEPTR[SI],'A'

JNENOTA

MOVBYTEPTR[DI],'B'

JMPNEXT

NOTA:

MOVAL,[SI]

MOV[DI],AL

NEXT:

INCSI

INCDI

LOOPAGAIN

MOVBYTEPTR[DI],'$'

LEADX,STROUT

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

5

DATASEGMENT

BUFDB0FFH

DB?

DB0FFHDUP(?)

STROUTDB0DH,0AH,0FDHDUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:

MOVAX,DATA

MOVDS,AX

LEADX,BUF

MOVAH,0AH

INT21H

LEASI,BUF[2]

LEADI,STROUT[2]

MOVCL,BUF[1]

XORCH,CH

AGAIN:

CMPBYTEPTR[SI],'A'

JNZNOTA

MOVWORDPTR[DI],'CC'

ADDDI,2

JMPNEXT

NOTA:

MOVAL,[SI]

MOV[DI],AL

INCDI

NEXT:

INCSI

LOOPAGAIN

MOVBYTEPTR[DI],'$'

LEADX,STROUT

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

6

DATASEGMENT

BUFDB0FFH

DB?

DB0FFHDUP(?)

STROUTDB0DH,0AH,0FDHDUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:

MOVAX,DATA

MOVDS,AX

LEADX,BUF

MOVAH,0AH

INT21H

LEASI,BUF[2]

LEADI,STROUT[2]

MOVCL,BUF[1]

XORCH,CH

AGAIN:

CMPBYTEPTR[SI],'A'

JBNOTUP

CMPBYTEPTR[SI],'Z'

JANOTUP

MOVAL,[SI]

ADDAL,20H

MOV[DI],AL

JMPNEXT

NOTUP:

MOVAL,[SI]

MOV[DI],AL

NEXT:

INCSI

INCDI

LOOPAGAIN

MOVBYTEPTR[DI],'$'

LEADX,STROUT

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

7

DATASEGMENT

BUFDB0FFH

DB?

DB0FFHDUP(?)

STROUTDB0DH,0AH,0FDHDUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:

MOVAX,DATA

MOVDS,AX

LEADX,BUF

MOVAH,0AH

INT21H

LEASI,BUF[2]

LEADI,STROUT[2]

MOVCL,BUF[1]

XORCH,CH

AGAIN:

CMPBYTEPTR[SI],'A'

JBNOTUP

CMPBYTEPTR[SI],'Z'

JANOTUP

INCSI

JMPNEXT

NOTUP:

CMPBYTEPTR[SI],'a'

JBNOTALPHA

CMPBYTEPTR[SI],'z'

JANOTALPHA

INCSI

JMPNEXT

NOTALPHA:

MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

NEXT:

LOOPAGAIN

MOVBYTEPTR[DI],'$'

LEADX,STROUT

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

8

DATASEGMENT

BUFDB05H

DB?

DB05HDUP(?)

STROUTDB0DH,0AH,'data'

DB0DH,0AH,'name'

DB0DH,0AH,'time'

DB0DH,0AH,'file'

DB0DH,0AH,'code'

DB0DH,0AH,'path'

DB0DH,0AH,'user'

DB0DH,0AH,'exit'

DB0DH,0AH,'quit'

DB0DH,0AH,'text','$'

REPLACEDB'disk'

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEADX,BUF

MOVAH,0AH

INT21H

LEABX,STROUT[2]

LEASI,BUF[2]

LEADI,STROUT[2]

MOVCX,10

AGAIN:

CLD

PUSHCX

MOVCX,4

REPZCMPSB

POPCX

JNZNEXT

LEASI,REPLACE

MOVDI,BX

MOVDX,4

SUBAGAIN:

MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

DECDX

JNZSUBAGAIN

JMPEXIT

NEXT:

LEASI,BUF[2]

ADDBX,6

MOVDI,BX

LOOPAGAIN

EXIT:

LEADX,STROUT

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

9

DATASEGMENT

BUFDB0DH,0AH,'ram'

DB0DH,0AH,'yes'

DB0DH,0AH,'red'

DB0DH,0AH,'the'

DB0DH,0AH,'get'

DB0DH,0AH,'for'

DB0DH,0AH,'and'

DB0DH,0AH,'key'

DB0DH,0AH,'not'

DB0DH,0AH,'may','$'

TMPDB'???'

DATAENDS

STACKSEGMENTSTACK

DB0FFHDUP(?)

STACKENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA

MAINPROCNEAR

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEABX,BUF[2]

MOVDH,9

AGAIN0:

MOVDI,BX

MOVSI,DI

ADDSI,5

MOVDL,DH

AGAIN1:

PUSHSI

PUSHDI

MOVCX,3

CLD

REPZCMPSB

POPDI

POPSI

JANOTABOVE

MOVDI,SI

JMPNEXT1

NOTABOVE:

NEXT1:

ADDSI,5

DECDL

JNZAGAIN1

NEXT0:

CALLXCHGS3

ADDBX,5

DECDH

JNZAGAIN0

LEADX,BUF

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

MAINENDP

XCHGS3PROCNEAR

PUSHSI

PUSHDI

PUSHCX

MOVSI,DI

MOVDI,BX

MOVCX,3

AGAINXCHGS3:

MOVAL,[SI]

MOVAH,[DI]

MOV[SI],AH

MOV[DI],AL

INCSI

INCDI

LOOPAGAINXCHGS3

POPCX

POPSI

POPDI

RET

XCHGS3ENDP

CODEENDS

ENDSTART

10

DATASEGMENT

BUFDB05H

DB?

DB05HDUP(?)

STROUTDB0DH,0AH,'data','$'

DB0DH,0AH,'name','$'

DB0DH,0AH,'time','$'

DB0DH,0AH,'file','$'

DB0DH,0AH,'code','$'

DB0DH,0AH,'path','$'

DB0DH,0AH,'user','$'

DB0DH,0AH,'exit','$'

DB0DH,0AH,'quit','$'

DB0DH,0AH,'test','$'

DATAENDS

STACKSEGMENTSTACK

DB100DUP(?)

STACKENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVAX,STACK

MOVSS,AX

LEADX,BUF

MOVAH,0AH

INT21H

LEASI,BUF[2]

LEADI,STROUT[2]

MOVDL,10

AGAIN0:

PUSHSI

PUSHDI

MOVCX,4

CLD

REPZCMPSB

POPDI

POPSI

JEDEL

ADDDI,7

DECDL

JNZAGAIN0

JMPEXIT

DEL:

CLD

MOVAL,20H

MOVCX,4

REPSTOSB

EXIT:

LEADX,STROUT

MOVCX,10

AGAIN1:

PUSHDX

MOVBX,DX

CMPBYTEPTR[BX+2],''

JENEXT1

MOVAH,09H

INT21H

NEXT1:

POPDX

ADDDX,7

LOOPAGAIN1

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

11

DATASEGMENT

STRINSERTDB'disk'

BUFDB0DH,0AH,'data'

DB0DH,0AH,'name'

DB0DH,0AH,'time'

DB0DH,0AH,'file'

DB0DH,0AH,'code'

DB0DH,0AH,'path'

DB0DH,0AH,'user'

DB0DH,0AH,'exit'

DB0DH,0AH,'quit'

DB0DH,0AH,'test'

DB0DH,0AH,''

DB0DH,0AH,'$'

DATAENDS

STACKSEGMENTSTACK

DW0FFHDUP(?)

STACKENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEABX,BUF[2]

MOVDL,9

AGAIN0:

MOVDI,BX

MOVSI,DI

ADDSI,6

MOVDH,DL

AGAIN1:

PUSHSI

PUSHDI

CLD

MOVCX,4

REPZCMPSB

POPDI

POPSI

JANEXT1

MOVDI,SI

NEXT1:

ADDSI,6

DECDH

JNZAGAIN1

NEXT0:

CALLXCHGS4

ADDBX,6

DECDL

JNZAGAIN0

LEADX,BUF

MOVAH,09H

INT21H

LEABX,BUF[2+6*10]

LEASI,STRINSERT

LEADI,BUF[2]

MOVDL,10

AGAIN2:

PUSHSI

PUSHDI

CLD

MOVCX,4

REPCMPSB

POPDI

POPSI

JBSHIFTRIGHT

NEXT2:

ADDDI,6

DECDL

JNZAGAIN2

SHIFTRIGHT:

PUSHDI

MOVAX,BX

SUBAX,DI

ADDBX,3

MOVSI,BX

SUBSI,6

MOVDI,BX

STD

MOVCX,AX

REPMOVSB

INSERT:

POPDI

LEASI,STRINSERT

CLD

MOVCX,4

REPMOVSB

LEADX,BUF

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

XCHGS4PROCNEAR

PUSHSI

PUSHDI

PUSHCX

MOVSI,BX

CLD

MOVCX,4

AGAINXCHGS4:

MOVAL,[SI]

MOVAH,[DI]

MOV[SI],AH

MOV[DI],AL

INCSI

INCDI

LOOPAGAINXCHGS4

POPCX

POPDI

POPSI

RET

XCHGS4ENDP

CODEENDS

ENDSTART

12

DATASEGMENT

BUFDB50H

DB51HDUP(?)

STROUTDB0DH,0AH,0FDHDUP(?)

TMPDB0FCHDUP('0')

DATAENDS

STACK_SEGSEGMENTSTACK

DW0FFHDUP(?)

STACK_SEGENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK_SEG

MAINPROCNEAR

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEADX,BUF

MOVAH,0AH

INT21H

LEASI,BUF[2]

MOVCL,BUF[1]

XORCH,CH

AGAIN0:

SUBBYTEPTR[SI],30H

NEXT0:

INCSI

LOOPAGAIN0

LEABX,TMP

MOVCX,0

AGAIN1:

CALLDECDEC

CMPAX,0

JNEEXIT

CALLHEXINC

JMPAGAIN1

EXIT:

CALLCONV

LEADX,STROUT

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

MAINENDP

DECDECPROCNEAR

PUSHCX

PUSHBX

LEASI,BUF[2]

MOVBX,SI

MOVAL,BUF[1]

XORAH,AH

ADDSI,AX

DECSI

MOVDI,SI

BORROW:

CMPBYTEPTR[SI],0

JNEDECING

DECSI

CMPSI,BX

JBHALT

JMPBORROW

DECING:

DECBYTEPTR[SI]

INCSI

AGAINDEC:

CMPSI,DI

JAEXITDECDEC

MOVBYTEPTR[SI],09H

INCSI

JMPAGAINDEC

HALT:

MOVAX,1

JMPDECRET

EXITDECDEC:

MOVAX,0

DECRET:

POPBX

POPCX

RET

DECDECENDP

HEXINCPROCNEAR

PUSHCX

LEASI,TMP

CARRY:

CMPBYTEPTR[SI],'F'

JNEINCING

INCSI

JMPCARRY

INCING:

CMPBYTEPTR[SI],'9'

JNZNOTADDTEN

MOVBYTEPTR[SI],'A'

JMPBREAK0

NOTADDTEN:

INCBYTEPTR[SI]

BREAK0:

CMPSI,BX

JBNOTA

MOVBX,SI

NOTA:

MOVAL,'0'

CLD

LEADI,TMP

MOVCX,SI

SUBCX,DI

REPSTOSB

EXITINC:

POPCX

RET

HEXINCENDP

CONVPROCNEAR

MOVSI,BX

LEADI,TMP

SUBBX,DI

INCBX

MOVCX,BX

LEADI,STROUT[2]

AGAINCONV:

MOVAL,[SI]

MOV[DI],AL

DECSI

INCDI

LOOPAGAINCONV

MOVBYTEPTR[DI],'$'

RET

CONVENDP

CODEENDS

ENDSTART

13

DATASEGMENT

BUFDB50H

DB51HDUP(?)

STROUTDB0DH,0AH,0FDHDUP(?)

TMPDB0FCHDUP('0')

DATAENDS

STACK_SEGSEGMENTSTACK

DW0FFHDUP(?)

STACK_SEGENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK_SEG

MAINPROCNEAR

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEADX,BUF

MOVAH,0AH

INT21H

LEASI,BUF[2]

MOVCL,BUF[1]

XORCH,CH

AGAIN0:

SUBBYTEPTR[SI],30H

NEXT0:

INCSI

LOOPAGAIN0

LEABX,TMP

MOVCX,0

AGAIN1:

CALLDECDEC

CMPAX,0

JNEEXIT

CALLBININC

JMPAGAIN1

EXIT:

CALLCONV

LEADX,STROUT

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

MAINENDP

DECDECPROCNEAR

PUSHCX

PUSHBX

LEASI,BUF[2]

MOVBX,SI

MOVAL,BUF[1]

XORAH,AH

ADDSI,AX

DECSI

MOVDI,SI

BORROW:

CMPBYTEPTR[SI],0

JNEDECING

DECSI

CMPSI,BX

JBHALT

JMPBORROW

DECING:

DECBYTEPTR[SI]

INCSI

AGAINDEC:

CMPSI,DI

JAEXITDECDEC

MOVBYTEPTR[SI],09H

INCSI

JMPAGAINDEC

HALT:

MOVAX,1

JMPDECRET

EXITDECDEC:

MOVAX,0

DECRET:

POPBX

POPCX

RET

DECDECENDP

BININCPROCNEAR

PUSHCX

LEASI,TMP

CARRY:

CMPBYTEPTR[SI],'1'

JNEINCING

INCSI

JMPCARRY

INCING:

INCBYTEPTR[SI]

CMPSI,BX

JBNOTA

MOVBX,SI

NOTA:

MOVAL,'0'

CLD

LEADI,TMP

MOVCX,SI

SUBCX,DI

REPSTOSB

EXITINC:

POPCX

RET

BININCENDP

CONVPROCNEAR

MOVSI,BX

LEADI,TMP

SUBBX,DI

INCBX

MOVCX,BX

LEADI,STROUT[2]

AGAINCONV:

MOVAL,[SI]

MOV[DI],AL

DECSI

INCDI

LOOPAGAINCONV

MOVBYTEPTR[DI],'$'

RET

CONVENDP

CODEENDS

ENDSTART

14

DATASEGMENT

BUFDB50H

DB51HDUP(?)

STROUTDB0DH,0AH,0FDHDUP(?)

TMPDB0FCHDUP('0')

DATAENDS

STACK_SEGSEGMENTSTACK

DW0FFHDUP(?)

STACK_SEGENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK_SEG

MAINPROCNEAR

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEADX,BUF

MOVAH,0AH

INT21H

LEASI,BUF[2]

MOVCL,BUF[1]

XORCH,CH

AGAIN0:

SUBBYTEPTR[SI],30H

NEXT0:

INCSI

LOOPAGAIN0

LEABX,TMP

MOVCX,0

AGAIN1:

CALLBINDEC

CMPAX,0

JNEEXIT

CALLHEXINC

JMPAGAIN1

EXIT:

CALLCONV

LEADX,STROUT

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

MAINENDP

BINDECPROCNEAR

PUSHCX

PUSHBX

LEASI,BUF[2]

MOVBX,SI

MOVAL,BUF[1]

XORAH,AH

ADDSI,AX

DECSI

MOVDI,SI

BORROW:

CMPBYTEPTR[SI],0

JNEDECING

DECSI

CMPSI,BX

JBHALT

JMPBORROW

DECING:

DECBYTEPTR[SI]

INCSI

AGAINDEC:

CMPSI,DI

JAEXITBINDEC

MOVBYTEPTR[SI],01H

INCSI

JMPAGAINDEC

HALT:

MOVAX,1

JMPDECRET

EXITBINDEC:

MOVAX,0

DECRET:

POPBX

POPCX

RET

BINDECENDP

HEXINCPROCNEAR

PUSHCX

LEASI,TMP

CARRY:

CMPBYTEPTR[SI],'F'

JNEINCING

INCSI

JMPCARRY

INCING:

CMPBYTEPTR[SI],'9'

JNZNOTADDTEN

MOVBYTEPTR[SI],'A'

JMPBREAK0

NOTADDTEN:

INCBYTEPTR[SI]

BREAK0:

CMPSI,BX

JBNOTA

MOVBX,SI

NOTA:

MOVAL,'0'

CLD

LEADI,TMP

MOVCX,SI

SUBCX,DI

REPSTOSB

EXITINC:

POPCX

RET

HEXINCENDP

CONVPROCNEAR

MOVSI,BX

LEADI,TMP

SUBBX,DI

INCBX

MOVCX,BX

LEADI,STROUT[2]

AGAINCONV:

MOVAL,[SI]

MOV[DI],AL

DECSI

INCDI

LOOPAGAINCONV

MOVBYTEPTR[DI],'$'

RET

CONVENDP

CODEENDS

ENDSTART

15

DATASEGMENT

BUFDB50H

DB51HDUP(?)

STROUTDB0DH,0AH,0FDHDUP(?)

TMPDB0FCHDUP('0')

DATAENDS

STACK_SEGSEGMENTSTACK

DW0FFHDUP(?)

STACK_SEGENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK_SEG

MAINPROCNEAR

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEADX,BUF

MOVAH,0AH

INT21H

LEASI,BUF[2]

MOVCL,BUF[1]

XORCH,CH

AGAIN0:

SUBBYTEPTR[SI],30H

NEXT0:

INCSI

LOOPAGAIN0

LEABX,TMP

MOVCX,0

AGAIN1:

CALLBINDEC

CMPAX,0

JNEEXIT

CALLDECINC

JMPAGAIN1

EXIT:

CALLCONV

LEADX,STROUT

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

MAINENDP

BINDECPROCNEAR

PUSHCX

PUSHBX

LEASI,BUF[2]

MOVBX,SI

MOVAL,BUF[1]

XORAH,AH

ADDSI,AX

DECSI

MOVDI,SI

BORROW:

CMPBYTEPTR[SI],0

JNEDECING

DECSI

CMPSI,BX

JBHALT

JMPBORROW

DECING:

DECBYTEPTR[SI]

INCSI

AGAINDEC:

CMPSI,DI

JAEXITBINDEC

MOVBYTEPTR[SI],01H

INCSI

JMPAGAINDEC

HALT:

MOVAX,1

JMPDECRET

EXITBINDEC:

MOVAX,0

DECRET:

POPBX

POPCX

RET

BINDECENDP

DECINCPROCNEAR

PUSHCX

LEASI,TMP

CARRY:

CMPBYTEPTR[SI],'9'

JNEINCING

INCSI

JMPCARRY

INCING:

INCBYTEPTR[SI]

CMPSI,BX

JBNOTA

MOVBX,SI

NOTA:

MOVAL,'0'

CLD

LEADI,TMP

MOVCX,SI

SUBCX,DI

REPSTOSB

EXITINC:

POPCX

RET

DECINCENDP

CONVPROCNEAR

MOVSI,BX

LEADI,TMP

SUBBX,DI

INCBX

MOVCX,BX

LEADI,STROUT[2]

AGAINCONV:

MOVAL,[SI]

MOV[DI],AL

DECSI

INCDI

LOOPAGAINCONV

MOVBYTEPTR[DI],'$'

RET

CONVENDP

CODEENDS

ENDSTART

16

DATASEGMENT

BUFDB50H

DB51HDUP(?)

STROUTDB0DH,0AH,0FDHDUP(?)

TMPDB0FCHDUP('0')

DATAENDS

STACK_SEGSEGMENTSTACK

DW0FFHDUP(?)

STACK_SEGENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK_SEG

MAINPROCNEAR

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEADX,BUF

MOVAH,0AH

INT21H

LEASI,BUF[2]

MOVCL,BUF[1]

XORCH,CH

AGAIN0:

CMPBYTEPTR[SI],'0'

JBNOTNUM

CMPBYTEPTR[SI],'9'

JANOTNUM

SUBBYTEPTR[SI],30H

JMPNEXT0

NOTNUM:

CMPBYTEPTR[SI],'A'

JBISDOWN

CMPBYTEPTR[SI],'Z'

JAISDOWN

SUBBYTEPTR[SI],37H

JMPNEXT0

ISDOWN:

SUBBYTEPTR[SI],57H

NEXT0:

INCSI

LOOPAGAIN0

LEABX,TMP

MOVCX,0

AGAIN1:

CALLHEXDEC

CMPAX,0

JNEEXIT

CALLDECINC

JMPAGAIN1

EXIT:

CALLCONV

LEADX,STROUT

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

MAINENDP

HEXDECPROCNEAR

PUSHCX

PUSHBX

LEASI,BUF[2]

MOVBX,SI

MOVAL,BUF[1]

XORAH,AH

ADDSI,AX

DECSI

MOVDI,SI

BORROW:

CMPBYTEPTR[SI],0

JNEDECING

DECSI

CMPSI,BX

JBHALT

JMPBORROW

DECING:

DECBYTEPTR[SI]

INCSI

AGAINDEC:

CMPSI,DI

JAEXITHEXDEC

MOVBYTEPTR[SI],0FH

INCSI

JMPAGAINDEC

HALT:

MOVAX,1

JMPHEXRET

EXITHEXDEC:

MOVAX,0

HEXRET:

POPBX

POPCX

RET

HEXDECENDP

DECINCPROCNEAR

PUSHCX

LEASI,TMP

CARRY:

CMPBYTEPTR[SI],'9'

JNEINCING

INCSI

JMPCARRY

INCING:

INCBYTEPTR[SI]

CMPSI,BX

JBNOTA

MOVBX,SI

NOTA:

MOVAL,'0'

CLD

LEADI,TMP

MOVCX,SI

SUBCX,DI

REPSTOSB

EXITINC:

POPCX

RET

DECINCENDP

CONVPROCNEAR

MOVSI,BX

LEADI,TMP

SUBBX,DI

INCBX

MOVCX,BX

LEADI,STROUT[2]

AGAINCONV:

MOVAL,[SI]

MOV[DI],AL

DECSI

INCDI

LOOPAGAINCONV

MOVBYTEPTR[DI],'$'

RET

CONVENDP

CODEENDS

ENDSTART

17

DATASEGMENT

BUFDB50H

DB51HDUP(?)

STROUTDB0DH,0AH,0FDHDUP(?)

TMPDB0FCHDUP('0')

DATAENDS

STACK_SEGSEGMENTSTACK

DW0FFHDUP(?)

STACK_SEGENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK_SEG

MAINPROCNEAR

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEADX,BUF

MOVAH,0AH

INT21H

LEASI,BUF[2]

MOVCL,BUF[1]

XORCH,CH

AGAIN0:

CMPBYTEPTR[SI],'0'

JBNOTNUM

CMPBYTEPTR[SI],'9'

JANOTNUM

SUBBYTEPTR[SI],30H

JMPNEXT0

NOTNUM:

CMPBYTEPTR[SI],'A'

JBISDOWN

CMPBYTEPTR[SI],'Z'

JAISDOWN

SUBBYTEPTR[SI],37H

JMPNEXT0

ISDOWN:

SUBBYTEPTR[SI],57H

NEXT0:

INCSI

LOOPAGAIN0

LEABX,TMP

MOVCX,0

AGAIN1:

CALLHEXDEC

CMPAX,0

JNEEXIT

CALLBININC

JMPAGAIN1

EXIT:

CALLCONV

LEADX,STROUT

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

MAINENDP

HEXDECPROCNEAR

PUSHCX

PUSHBX

LEASI,BUF[2]

MOVBX,SI

MOVAL,BUF[1]

XORAH,AH

ADDSI,AX

DECSI

MOVDI,SI

BORROW:

CMPBYTEPTR[SI],0

JNEDECING

DECSI

CMPSI,BX

JBHALT

JMPBORROW

DECING:

DECBYTEPTR[SI]

INCSI

AGAINDEC:

CMPSI,DI

JAEXITHEXDEC

MOVBYTEPTR[SI],0FH

INCSI

JMPAGAINDEC

HALT:

MOVAX,1

JMPHEXRET

EXITHEXDEC:

MOVAX,0

HEXRET:

POPBX

POPCX

RET

HEXDECENDP

BININCPROCNEAR

PUSHCX

LEASI,TMP

CARRY:

CMPBYTEPTR[SI],'1'

JNEINCING

INCSI

JMPCARRY

INCING:

INCBYTEPTR[SI]

CMPSI,BX

JBNOTA

MOVBX,SI

NOTA:

MOVAL,'0'

CLD

LEADI,TMP

MOVCX,SI

SUBCX,DI

REPSTOSB

EXITINC:

POPCX

RET

BININCENDP

CONVPROCNEAR

MOVSI,BX

LEADI,TMP

SUBBX,DI

INCBX

MOVCX,BX

LEADI,STROUT[2]

AGAINCONV:

MOVAL,[SI]

MOV[DI],AL

DECSI

INCDI

LOOPAGAINCONV

MOVBYTEPTR[DI],'$'

RET

CONVENDP

CODEENDS

ENDSTART

18

DATASEGMENT

BUFDB38H,4AH,0C5H,83H,9CH,0B4H,7FH,0C4H,05H,0F5H

COUNTDB$-BUF

STROUTDB0DH,0AH,'NEGATIVENUMBER=0','$'

STRTMPDB4DUP(?)

STRTENDB0DH,0AH,'NEGSUM=-',4DUP(?),'$'

NEGSUMDW0

DATAENDS

STACK_SEGSEGMENTSTACK

DW100DUP(?)

STACK_SEGENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACK_SEG

START:

MOVAX,DATA

MOVDS,AX

LEASI,BUF

MOVCL,COUNT

XORCH,CH

AGAIN0:

CMPBYTEPTR[SI],0

JGPOSITIVE

INCSTROUT[18]

MOVAL,[SI]

NEGAL

XORAH,AH

ADDNEGSUM,AX

POSITIVE:

INCSI

LOOPAGAIN0

LEASI,STRTMP

MOVAX,NEGSUM

MOVCL,10

CONV:

DIVCL

CMPAL,0

MOV[SI],AH

JEEXITCONV

INCSI

CBW

JMPCONV

EXITCONV:

LEASI,STRTMP

MOVCX,4

AGAIN1:

ADDBYTEPTR[SI],30H

INCSI

LOOPAGAIN1

LEASI,STRTMP

ADDSI,3

LEADI,STRTEN[10]

MOVCX,4

AGAIN2:

MOVAL,[SI]

MOV[DI],AL

DECSI

INCDI

LOOPAGAIN2

LEADX,STROUT

MOVAH,09H

INT21H

LEADX,STRTEN

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

19

DATASEGMENT

BUF1DB7

DB8DUP(?)

BUF2DB7

DB8DUP(?)

TMPDB4DUP(?)

STROUTDB0DH,0AH,7DUP('0'),'$'

STRENTDB0DH,0AH,'$'

DATAENDS

STACK_SEGSEGMENT

DW100DUP(?)

STACK_SEGENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACK_SEG

START:

MOVAX,DATA

MOVDS,AX

LEADX,BUF1

MOVAH,0AH

INT21H

LEADX,STRENT

MOVAH,09H

INT21H

LEADX,BUF2

MOVAH,0AH

INT21H

LEASI,BUF1[2]

MOVCX,6

AGAIN0:

SUBBYTEPTR[SI],30H

INCSI

LOOPAGAIN0

LEASI,BUF2[2]

MOVCX,6

AGAIN1:

SUBBYTEPTR[SI],30H

INCSI

LOOPAGAIN1

LEASI,BUF1[2]

ADDSI,5

LEADI,BUF2[2]

ADDDI,5

LEABX,STROUT[8]

MOVCX,6

CLC

AGAIN3:

MOVAL,[SI]

ADCAL,[DI]

CLC

CMPAL,10

JAECARRY

ADD[BX],AL

JMPNEXT3

CARRY:

SUBAL,10

ADD[BX],AL

STC

NEXT3:

DECSI

DECDI

DECBX

LOOPAGAIN3

ADCBYTEPTR[BX],0

LEADX,STROUT

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

20

DATASEGMENT

BUF1DB9

DB10DUP(?)

BUF2DB9

DB10DUP(?)

TMPDB4DUP(?)

STROUTDB0DH,0AH,9DUP('0'),'$'

STRENTDB0DH,0AH,'$'

DATAENDS

STACK_SEGSEGMENTSTACK

DW100DUP(?)

STACK_SEGENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACK_SEG

START:

MOVAX,DATA

MOVDS,AX

LEADX,BUF1

MOVAH,0AH

INT21H

LEADX,STRENT

MOVAH,09H

INT21H

LEADX,BUF2

MOVAH,0AH

INT21H

LEASI,BUF1[2]

MOVCX,8

AGAIN0:

SUBBYTEPTR[SI],30H

INCSI

LOOPAGAIN0

LEASI,BUF2[2]

MOVCX,8

AGAIN1:

SUBBYTEPTR[SI],30H

INCSI

LOOPAGAIN1

LEASI,BUF1[2]

ADDSI,7

LEADI,BUF2[2]

ADDDI,7

LEABX,STROUT[10]

MOVCX,8

CLC

AGAIN3:

MOVAL,[SI]

ADCAL,[DI]

CLC

CMPAL,10

JAECARRY

ADD[BX],AL

JMPNEXT3

CARRY:

SUBAL,10

ADD[BX],AL

STC

NEXT3:

DECSI

DECDI

DECBX

LOOPAGAIN3

ADCBYTEPTR[BX],0

LEADX,STROUT

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

21

DATASEGMENT

TEMPDB3

DB?

DB3DUP(?)

BUFDB0DH,0AH,'SUM=',3DUP(?),'$'

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA

MAINPROCFAR

MOVAX,DATA

MOVDS,AX

LEADI,BUF

MOVSI,0

LEADX,TEMP

MOVCH,10

INPUT:DECCH

JZDISP

MOVAH,0AH

INT21H

MOVBX,DX

MOVDL,2

MOVAL,[BX+2]

CMPAL,39H

JNAIS0_9

JMPISA_F

LOWNUM:MOVAH,AL

MOVAL,[BX+3]

CMPAL,39H

JNAIS0_9

JMPISA_F

IS0_9:SUBAL,30H

DECDL

JZLTOS

JMPLOWNUM

ISA_F:SUBAL,37H

DECDL

JZLTOS

JMPLOWNUM

LTOS:MOVCL,4

SHLAH,CL

ORAL,AH

ANDAX,00FFH

ADCSI,AX

JMPINPUT

DISP:LEADI,BUF+9

MOVAX,SI

CALLHTOB

LEADX,BUF

MOVAH,9

INT21H

MOVAH,4CH

INT21H

MAINENDP

HTOBPROCNEAR

MOVCX,16

INCDI

AGAIN3:MOVDX,0

DIVCX

DECDI

CMPDL,9H

JNAIS0_9_1

ADDDL,37H

JMPSAVE

IS0_9_1:ADDDL,30H

JMPSAVE

SAVE:MOV[DI],DL

ORAX,AX

JNZAGAIN3

RET

HTOBENDP

CODEENDS

ENDMAIN

22

DATASEGMENT

BUFDW

125AH,4357H,0F50H,0B43H,4AC4H,7454H,8B15H,0A2A4H,0F3CH,00F6

H

MAXDW?

MINDW?

DISPDB'MAX=','0000H'

DB0DH,0AH,'MIN=','0000H','$'

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA

MAINPROCFAR

MOVAX,DATA

MOVDS,AX

LEASI,BUF

MOVBX,[SI]

MOVDX,[SI]

DECSI

DECSI

MOVCX,11

NEXT:DECCX

JZOVER

INCSI

INCSI

MOVAX,[SI]

CMPAX,BX

JNGCHANGE1

CMPAX,DX

JGCHANGE2

JMPNEXT

CHANGE1:MOVBX,AX

JMPNEXT

CHANGE2:MOVDX,AX

JMPNEXT

MOV[MIN],BX

MOV[MAX],DX

OVER:LEADI,DISP+8

MOVAX,DX

CALLHTOB

LEADI,DISP+20

MOVAX,BX

CALLHTOB

LEADX,DISP

MOVAH,9

INT21H

MOVAH,4CH

INT21H

MAINENDP

HTOBPROCNEAR

MOVCX,16

INCDI

AGAIN3:MOVDX,0

DIVCX

DECDI

CMPDL,9H

JNAIS0_9_1

ADDDL,37H

JMPSAVE

IS0_9_1:ADDDL,30H

JMPSAVE

SAVE:MOV[DI],DL

ORAX,AX

JNZAGAIN3

RET

HTOBENDP

CODEENDS

ENDMAIN

23

DATASEGMENT

TEMPDB3

DB?

DB3DUP(?)

MAXDB?

MINDB?

BUFDB10DUP(?)

DISPDB'MAX=','00H'

DB0DH,0AH,'MIN=','00H','$'

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA

MAINPROCFAR

MOVAX,DATA

MOVDS,AX

LEADI,BUF

MOVSI,0

MOVCH,11

INPUT:DECCH

JZBIJIAO

LEADX,TEMP

MOVAH,0AH

INT21H

MOVBX,DX

MOVDL,2

MOVAL,[BX+2]

CMPAL,39H

JNAIS0_9

JMPISA_F

LOWNUM:MOVAH,AL

MOVAL,[BX+3]

CMPAL,39H

JNAIS0_9

JMPISA_F

IS0_9:SUBAL,30H

DECDL

JZLTOS

JMPLOWNUM

ISA_F:SUBAL,37H

DECDL

JZLTOS

JMPLOWNUM

LTOS:MOVCL,4

SHLAH,CL

ORAL,AH

MOV[DI],AL

INCDI

JMPINPUT

BIJIAO:MOVCX,10

LEASI,BUF

MOVBL,[SI]

MOVDI,[SI]

NEXT:DECCX

JZOVER

INCSI

MOVAL,[SI]

CMPAL,BL

JNACHANGE1

CMPAL,DL

JACHANGE2

JMPNEXT

CHANGE1:MOVBL,AL

JMPNEXT

CHANGE2:MOVDL,AL

JMPNEXT

MOV[MIN],BL

MOV[MAX],DL

OVER:LEADI,DISP+6

MOVAX,DX

CALLHTOB

LEADI,DISP+16

MOVAX,BX

CALLHTOB

LEADX,DISP

MOVAH,9

INT21H

MOVAH,4CH

INT21H

MAINENDP

HTOBPROCNEAR

MOVCX,16

INCDI

AGAIN3:MOVDX,0

DIVCX

DECDI

CMPDL,9H

JNAIS0_9_1

ADDDL,37H

JMPSAVE

IS0_9_1:ADDDL,30H

JMPSAVE

SAVE:MOV[DI],DL

ORAX,AX

JNZAGAIN3

RET

HTOBENDP

CODEENDS

ENDMAIN

DISP:LEADI,BUF+9

MOVAX,SI

CALLHTOB

LEADX,BUF

MOVAH,9

INT21H

MOVAH,4CH

INT21H

MAINENDP

HTOBPROCNEAR

MOVCX,16

INCDI

AGAIN3:MOVDX,0

DIVCX

DECDI

CMPDL,9H

JNAIS0_9_1

ADDDL,37H

JMPSAVE

IS0_9_1:ADDDL,30H

JMPSAVE

SAVE:MOV[DI],DL

ORAX,AX

JNZAGAIN3

RET

HTOBENDP

CODEENDS

ENDMAIN

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論