汇编上机网页答案.docx

上传人:b****4 文档编号:3521158 上传时间:2022-11-23 格式:DOCX 页数:22 大小:19.36KB
下载 相关 举报
汇编上机网页答案.docx_第1页
第1页 / 共22页
汇编上机网页答案.docx_第2页
第2页 / 共22页
汇编上机网页答案.docx_第3页
第3页 / 共22页
汇编上机网页答案.docx_第4页
第4页 / 共22页
汇编上机网页答案.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

汇编上机网页答案.docx

《汇编上机网页答案.docx》由会员分享,可在线阅读,更多相关《汇编上机网页答案.docx(22页珍藏版)》请在冰豆网上搜索。

汇编上机网页答案.docx

汇编上机网页答案

第一次上机作业

1.从键盘上接受一个字符,找出它的前导字符和后继字符,按序显示这三个字符。

寄存器分配:

AL:

暂存数据。

算法:

1、接受字符,存入AL。

      2、(AL)→A。

      3、(AL)自加1。

      4、(AL)→A+1。

      5、(AL)自加1。

      6、(AL)→A+2。

      7、‘$’→A+3。

      8、输出以A为首地址的字符串。

代码:

STACKSEGMENTSTACK

   DB100DUP(?

STACKENDS

DATASEGMENT

 BDB‘PLEASEENTERACHARACTER:

$’;定义变量B,以其为首地址依次存放提示字符串。

ADB5DUP(?

)  ;定义变量A,同时开辟连续5个字节空间。

DATAENDS

CODESEGMENT

  ASSUMECS:

CODE,DS:

DATA,SS:

STACK

  START:

MOVAX,DATA

        MOVDS,AX

        LEADX,B

        MOVAH,9

        INT21H

        MOVDL,0DH

        MOVAH,2

        INT21H

        MOVDL,0AH

        MOVAH,2

        INT21H

        MOVAH,1

        INT21H

        DECAL

        MOVA,AL

        INCAL

        MOVA+1,AL

        INCAL

        MOVA+2,AL

        MOVA+3,'$'

        MOVDL,0AH

        MOVAH,2

        INT21H

        MOVDL,0DH

        MOVAH,2

        INT21H

        LEADX,A

        MOVAH,9

        INT21H

        MOVAH,4CH

        INT21H

CODEENDS

    ENDSTART

输出:

PLEASEENTERACHARACTER:

     7(输入)

     678(显示)

    

2.从键盘上接受一个数字字符,如不是,显示“notodd”,否则显示“odd”。

寄存器分配:

AL:

暂存数据。

算法:

1、接受字符,存入AL。

      2、若AL<0,转到S3。

      3、否则,若AL>0,转到S3。

      4、否则,输出字符串“ODD”。

      5、程序结束。

注:

S3功能是输出字符串“NOTODD”。

代码:

STACKSEGMENTSTACK

   DB100DUP(?

STACKENDS

DATASEGMENTADB'N','O','T','','O','D','D','$';定义变量A,以其为首地址依次存放字符串。

DATAENDS

CODESEGMENT

  ASSUMECS:

CODE,DS:

DATA,SS:

STACK

  START:

MOVAX,DATA

        MOVDS,AX

        MOVAH,1

        INT21H

        CMPAL,'0'

        JBS3

        CMPAL,'9'

        JAS3

        MOVDL,0AH

        MOVAH,2

        INT21H

        MOVDL,0DH

        MOVAH,2

        INT21H

        LEADX,A+4

        MOVAH,9

        INT21H

        JMPEXIT

  S3:

  MOVDL,0AH

        MOVAH,2

        INT21H

        MOVDL,0DH

        MOVAH,2

        INT21H

        LEADX,A

        MOVAH,9

        INT21H

EXIT:

MOVAH,4CH

    INT21H

CODEENDS

    ENDSTART

输出:

     7(输入)

     ODD(显示)

第二次作业

1.  将以H为首地址的字节存储区中的既能被3整除也能被13整除的无符号整数的个数(假定≤9)显示出来,同时对应的显示它们分别对应的地址偏移量。

(利用多种寻址方式做)

(1)变址寻址:

寄存器分配:

BX:

作为H为首地址的存储区的地址指针。

SI:

作为A为首地址的存储区的地址指针。

DI:

同上。

AX:

暂存数据。

 

代码:

STACKSEGMENTSTACK

 DB100DUP(?

STACKENDS

DATASEGMENT

    HDB3,5,7,78,13,39

    N=$-H

    ADBNDUP(?

    CDB?

    DDB?

0

    EDB?

    FDB'THENUMBERIS:

$'

    GDB0AH,0DH,'$'

    IDB'ADDRESSOFFSET:

$'

DATAENDS

CODESEGMENT

    ASSUMECS:

CODE,DS:

DATA,SS:

STACK

    START:

  MOVAX,DATA

              MOVDS,AX

              MOVBX,0

              MOVSI,0

              MOVDI,0

              MOVE,0

    L1:

      CMPBX,N

              JAEPRINT

              MOVAL,H[BX]

              MOVD,AL

              MOVAX,WORDPTRD

              MOVC,3

              DIVC

              CMPAH,0

              JNEL2

              MOVAX,WORDPTRD

              MOVC,13

              DIVC

              CMPAH,0

              JNEL2

              INCE

              MOVA[SI],BL

              ADDA[SI],30H

              INCSI

              INCBX

              JMPL1

     L2:

     INCBX

              JMPL1

     PRINT:

  LEADX,F

              MOVAH,9

              INT21H

              LEADX,G

              MOVAH,9

              INT21H

              ADDE,30H

              MOVDL,E

              MOVAH,2

              INT21H

              LEADX,G

              MOVAH,9

              INT21H

     L3:

     CMPDI,SI

              JAEEXIT

              LEADX,I

              MOVAH,9

              INT21H

              MOVDL,A[DI]

              MOVAH,2

              INT21H

              MOVDL,''

              MOVAH,2

              INT21H

              INCDI

              JMPL3

     EXIT:

   MOVAH,4CH

              INT21H

CODEENDS

      ENDSTART

输出:

THENUMBERIS:

      2

      ADDRESSOFFSET:

3ADDRESSOFFSET:

5

(2)寄存器间接寻址:

寄存器分配:

BX:

作为H为首地址的存储区的地址指针。

SI:

作为A为首地址的存储区的地址指针。

DI:

同上。

AX:

暂存数据。

CX:

循环计数器和偏移量计数器。

 

代码:

STACKSEGMENTSTACK

    DB100DUP(?

STACKENDS

DATASEGMENT

    HDB3,5,7,78,13,39

    N=$-H

    ADBNDUP(?

    CDB?

    DDB?

0

    EDB?

    FDB'THENUMBERIS:

$'

    GDB0AH,0DH,'$'

    IDB'ADDRESSOFFSET:

$'

DATAENDS

CODESEGMENT

    ASSUMECS:

CODE,DS:

DATA,SS:

STACK

    START:

   MOVAX,DATA

              MOVDS,AX

              MOVE,0

              MOVCX,0

              MOVSI,0

              MOVDI,0

              LEABX,H

    L1:

      CMPCX,N

              JAEPRINT

              MOVAL,[BX]

              MOVD,AL

              MOVAX,WORDPTRD

              MOVC,3

              DIVC

              CMPAH,0

              JNEL2

              MOVAX,WORDPTRD

              MOVC,13

              DIVC

              CMPAH,0

              JNEL2

              INCBX

              INCE

              MOVA[SI],CL

              ADDA[SI],30H

              INCCX

              INCSI

              JMPL1

     L2:

     INCBX

              INCCX

              JMPL1

     PRINT:

  LEADX,F

              MOVAH,9

              INT21H

              ADDE,30H

              MOVDL,E

              MOVAH,2

              INT21H

              LEADX,G

              MOVAH,9

              INT21H

     L3:

     CMPDI,SI

              JAEEXIT

              LEADX,I

              MOVAH,9

              INT21H

              MOVDL,A[DI]

              MOVAH,2

              INT21H

              LEADX,G

              MOVAH,9

              INT21H

              INCDI

              JMPL3

     EXIT:

   MOVAH,4CH

              INT21H

CODEENDS

     ENDSTART

输出:

THENUMBERIS:

      2

ADDRESSOFFSET:

3

ADDRESSOFFSET:

5

(3)基址变址寻址:

  寄存器分配和流程图与

(2)基本类似。

  补充:

       DI还作为以H为首址各变量的偏移量。

       BX只存储H的地址。

代码:

STACKSEGMENTSTACK

    DB100DUP(?

STACKENDS

DATASEGMENT

    HDB3,5,7,78,13,39

    N=$-H

    ADBNDUP(?

    CDB?

    DDB?

0

    EDB?

    FDB'THENUMBERIS:

$'

    GDB0AH,0DH,'$'

    IDB'ADDRESSOFFSET:

$'

DATAENDS

CODESEGMENT

    ASSUMECS:

CODE,DS:

DATA,SS:

STACK

    START:

   MOVAX,DATA

              MOVDS,AX

              MOVE,0

              MOVCX,0

              MOVSI,0

              MOVDI,0

              LEABX,H

    L1:

      CMPCX,N

              JAEPRINT

              MOVAL,[BX+DI]

              MOVD,AL

              MOVAX,WORDPTRD

              MOVC,3

              DIVC

              CMPAH,0

              JNEL2

              MOVAX,WORDPTRD

              MOVC,13

              DIVC

              CMPAH,0

              JNEL2

              INCDI

              INCE

              MOVA[SI],CL

              ADDA[SI],30H

              INCCX

              INCSI

              JMPL1

     L2:

     INCDI

              INCCX

              JMPL1

     PRINT:

  LEADX,F

              MOVAH,9

              INT21H

              ADDE,30H

              MOVDL,E

              MOVAH,2

              INT21H

              LEADX,G

              MOVAH,9

              INT21H

              MOVDI,0

     L3:

     CMPDI,SI

              JAEEXIT

              LEADX,I

              MOVAH,9

              INT21H

              MOVDL,A[DI]

              MOVAH,2

              INT21H

              LEADX,G

              MOVAH,9

              INT21H

              INCDI

              JMPL3

     EXIT:

   MOVAH,4CH

              INT21H

CODEENDS

     ENDSTART

输出:

THENUMBERIS:

      2

ADDRESSOFFSET:

3

ADDRESSOFFSET:

5

2.  在以TAB为首地址的字存储区中存放有N个无符号数,试统计低3位全为1的数的个数(个数设为≤9),并显示。

寄存器分配:

BX:

作为TAB为首地址的存储区的地址指针。

CL:

测试低3位全为1的计数器。

DX:

临时存储数据。

代码:

STACKSEGMENTSTACK

 DB100DUP(?

STACKENDS

DATASEGMENT

 TABDW1,0,7,15

 N=($-TAB)/2

 ADB'THETOTALIS:

$'

DATAENDS

CODESEGMENT

    ASSUMECS:

CODE,DS:

DATA,SS:

STACK

    START:

   MOVAX,DATA

              MOVDS,AX

              MOVBX,0

              MOVCL,0

    L1:

      CMPBX,(N-1)*2

              JA PRINT

              MOVDX,7

              ANDDX,TAB[BX]

              CMPDX,111B

              JE L3

    L2:

      ADDBX,2

              JMPL1

    L3:

      INCCL

              ADDBX,2

              JMPL1

    PRINT:

   LEADX,A

              MOVAH,9

              INT21H

              ADDCL,30H

              MOVDL,CL

              MOVAH,2

              INT21H

    EXIT:

    MOVAH,4CH

              INT21H

CODEENDS

 ENDSTART

输出:

THETOTALIS:

2

3.  键盘接受一串字符到BUF为首地址的字节单元中,要求用下列方法分别编程,将它们以相反的次序显示在屏幕的下一行中:

(1).按地址从尾向前依次显示。

 寄存器分配:

BX:

作为BUF+2为首地址的存储区的地址指针。

 

代码:

STACKSEGMENTSTACK

 DB100DUP(?

STACKENDS

DATASEGMENT

 BUFDB100

     DB?

     DB100DUP(?

DATAENDS

CODESEGMENT

      ASSUMECS:

CODE,DS:

DATA,SS:

STACK

      START:

 MOVAX,DATA

               MOVDS,AX

               LEADX,BUF

               MOVAH,10

               INT21H

               MOVDL,0AH

               MOVAH,2

               INT21H

               MOVBL,BUF+1

               MOVBH,0

               DECBX

      L1:

     MOVDL,[BUF+2][BX]

               MOVAH,2

               INT21H

               DECBX

               CMPBX,0

               JGEL1

      EXIT:

   MOVAH,4CH

               INT21H

CODEENDS

 ENDSTART

输出:

dadasd(输入)

     dsadad(结果)

(2).利用堆栈反向显示。

寄存器分配:

BX:

作为BUF+2为首地址的存储区的地址指针,也存储循环最大次数。

CX:

循环计数器及暂存数据。

 

代码:

STACKSEGMENTSTACK

  DB100DUP(?

STACKENDS

DATASEGMENT

  BUFDB100

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1