硬件作业汇总.docx

上传人:b****6 文档编号:6839738 上传时间:2023-01-11 格式:DOCX 页数:36 大小:19.38KB
下载 相关 举报
硬件作业汇总.docx_第1页
第1页 / 共36页
硬件作业汇总.docx_第2页
第2页 / 共36页
硬件作业汇总.docx_第3页
第3页 / 共36页
硬件作业汇总.docx_第4页
第4页 / 共36页
硬件作业汇总.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

硬件作业汇总.docx

《硬件作业汇总.docx》由会员分享,可在线阅读,更多相关《硬件作业汇总.docx(36页珍藏版)》请在冰豆网上搜索。

硬件作业汇总.docx

硬件作业汇总

1.编写的程序实现将以STR1为起始地址存放的字符串“Howareyou?

$”传送到STR2开始的地址中去,并将STR2中的字符显示输出、具体要求是:

(1)用寄存器间接寻址方式,按正序将STR2中的字符依次显示出来。

(2)用相对寻址,用变址寄存器SI来寻址STR1和STR2,并逆序将STR2中的字符依次显示出来。

(3)用基址寻址,用基址寄存器BX寻址STR1和STR2,并按正序将STR2中的字符依次显示出来。

2.编写的程序实现将以STR1为起始地址存放的字符串“Howareyou?

$”传送到辅助数据段STR2开始的地址中去,并将STR2中的字符显示输出。

1-1

DATASEGMENT

STR1DB'HOWAREYOU?

$'

STR2DB12DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETSTR1

MOVDI,OFFSETSTR2

MOVCX,12

NEXT1:

MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

LOOPNEXT1

MOVSI,OFFSETSTR2

MOVCX,12

NEXT2:

MOVDL,[SI]

MOVAH,02H

INT21H

INCSI

LOOPNEXT2

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

1-2

DATASEGMENT

STR1DB'HOWAREYOU?

$'

STR2DB12DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,0

MOVCX,12

NEXT1:

MOVAL,STR1[SI]

MOVSTR2[SI],AL

INCSI

LOOPNEXT1

MOVSI,OFFSETSTR2+12-1

MOVCX,12

NEXT2:

MOVDL,[SI]

MOVAH,02H

INT21H

DECSI

LOOPNEXT2

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

1-3

DATASEGMENT

STR1DB'HOWAREYOU?

$'

STR2DB12DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETSTR1

MOVCX,12

NEXT1:

MOVAL,STR1[BX]

MOVSTR2[BX],AL

INCBX

LOOPNEXT1

MOVBX,OFFSETSTR2

MOVCX,12

NEXT2:

MOVDL,[BX]

MOVAH,02H

INT21H

INCBX

LOOPNEXT2

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2-1

DATASEGMENT

STR1DB'HOWAREYOU?

$'

STR2DB12DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETSTR1

MOVDI,OFFSETES:

STR2

MOVCX,12

NEXT1:

MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

LOOPNEXT1

MOVSI,OFFSETES:

STR2

MOVCX,12

NEXT2:

MOVDL,[SI]

MOVAH,02H

INT21H

INCSI

LOOPNEXT2

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(1)实现多字节二进制加法630B840A90H+436732AF8AH,用DEBUG查看程序结果。

(2)实现多字节二进制减法630B840A90H-436732AF8AH,用DEBUG查看程序结果。

5-1

DATASEGMENT

ONEDB90H,0AH,84H,0BH,63H,00H

TWODB8AH,0AFH,32H,67H,43H,00H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,6

MOVSI,0

CLC

L1:

MOVAL,TWO[SI]

ADCONE[SI],AL

INCSI

LOOPL1

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

5-2

DATASEGMENT

ONEDB90H,0AH,84H,0BH,63H,00H

TWODB8AH,0AFH,32H,67H,43H,00H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,6

MOVSI,0

CLC

L1:

MOVAL,TWO[SI]

SBBONE[SI],AL

INCSI

LOOPL1

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3.按例4-1的程序LI4_1_5的方法定义SS1,将SS1按字依次推人堆栈,然后按SS1中字符的反序从堆栈中弹出显示输出。

5.改写例4_6程序。

1)将例4_6改为不存储0,1,2,…,0FH,而用指令计算出这些十六进制数字(比如在DH里计算).然后将其转换成对应的ASCII码,并显示输出。

2)将例4_6改为不存储0,1,2,…,0FH,而直接用CX的值。

提示:

CX的值依次为16,15,…,2,1,如果换码表定义为:

TAB_DADB‘FEDCBA9876543210’,则CX-l即为‘0’,‘1’,‘2’,…,‘E’,‘F’在TAB_DA表中相对于表头的位移量。

6.编写一个解密0~9位字序列的程序,设0,1,2,3,4,5,6,7,8,9对应的密码表为9,0,8,2,7,4,6,3,1,5,键盘输入任意一个4位数密码要求程序能够马上输出这4位数对应的数字。

例如:

键盘输入9082,显示输出0123。

3-3

DATASEGMENT

STR1DW'21','43','65','87','09','BA','DC','FE','HG'

DW'JI','LK','NM','PO','RQ','TS'

DATAENDS

STACKSEGMENT

DW30DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVSI,0

MOVCX,30

IN_S:

PUSHSTR1[SI]

INCSI

LOOPIN_S

MOVCX,30

OUT_S:

POPDX

MOVAH,02H

INT21H

LOOPOUT_S

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3-5-1

DATASEGMENT

TAB_DADB'0123456789ABCDEF'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETTAB_DA

MOVDI,0

MOVCX,10

NEXT1:

MOVAL,TAB_DA[DI]

ANDAL,0FH

XLATTAB_DA

MOVDL,AL

MOVAH,02H

INT21H

INCDI

LOOPNEXT1

MOVCX,6

MOVDI,0

NEXT2:

MOVAL,TAB_DA[DI]

ADDAL,10

ANDAL,0FH

XLATTAB_DA

MOVDL,AL

MOVAH,02H

INT21H

INCDI

LOOPNEXT2

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3-5-2

DATASEGMENT

TAB_DADB'FEDCBA9876543210'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETTAB_DA

MOVCX,16

NEXT:

DECCX

MOVAL,CL

XLATTAB_DA

MOVDL,AL

MOVAH,02H

INT21H

INCCX

LOOPNEXT

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3-6

DATASEGMENT

TAB_DADB1,8,3,7,5,9,6,4,2,0

TAB_HEXDB10DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,4

MOVSI,0

L1:

MOVAH,01H

INT21H

MOVTAB_HEX[SI],AL

INCSI

LOOPL1

MOVDL,0AH

MOVAH,02H

INT21H

MOVDL,0DH

MOVAH,02H

INT21H

MOVCX,4

MOVSI,0

MOVBX,OFFSETTAB_DA

L2:

MOVAL,TAB_HEX[SI]

ANDAL,0FH

XLATTAB_DA

MOVDL,AL

ORDL,30H

MOVAH,02H

INT21H

INCSI

LOOPL2

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(1)用非压缩型BCD码的减法编写计算:

8621-4203的程序,并显示输出结果。

要求:

数据按低位存放在低地址字节.

(2)用压缩型BCD码的加法编写计算:

342186+894203的程序,并显示输出结果。

要求:

数据按低位存放在低地址字节.

(3)从键盘输入两个十进制数(可设位数为8位),用非压缩型BCD码计算求和,并输出计算结果。

第一题

DATASEGMENT

NUM1DB'12680'

NUM2DB'30240'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETNUM1

MOVDI,OFFSETNUM2

MOVCX,5

CLC

L1:

MOVAL,[SI]

SBBAL,[DI]

AAS

MOV[SI],AL

INCSI

INCDI

LOOPL1

MOVAH,02H

MOVCX,5

DECSI

L2:

MOVDL,[SI]

ORDL,30H

INT21H

DECSI

LOOPL2

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

第二题

DATASEGMENT

NUM1DB86H,21H,34H,00H

NUM2DB03H,42H,89H,00H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,0

MOVCX,4

CLC

L1:

MOVAL,NUM2[SI]

ADCAL,NUM1[SI]

DAA

MOVNUM1[SI],AL

INCSI

LOOPL1

MOVSI,OFFSETNUM1+3

MOVCX,4

L2:

MOVDL,[SI]

MOVBX,CX

MOVCX,4

SHRDL,CL

ORDL,30H

MOVAH,02H

INT21H

MOVDL,[SI]

ANDDL,0FH

ORDL,30H

MOVAH,02H

INT21H

DECSI

MOVCX,BX

LOOPL2

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

第三题

DATASEGMENT

NUM1DB?

?

?

?

?

?

?

?

00H

NUM2DB?

?

?

?

?

?

?

?

00H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,8

MOVSI,OFFSETNUM1

L1:

MOVAH,01H

INT21H

MOV[SI],AL

INCSI

LOOPL1

MOVDL,0DH

MOVAH,02H

INT21H

MOVDL,0AH

MOVAH,02H

INT21H

MOVDI,OFFSETNUM2

MOVCX,8

L2:

MOVAH,01H

INT21H

MOV[DI],AL

INCDI

LOOPL2

MOVDL,0DH

MOVAH,02H

INT21H

MOVDL,0AH

MOVAH,02H

INT21H

MOVSI,OFFSETNUM1

MOVDI,OFFSETNUM2

MOVCX,9

CLC

L3:

MOVAL,[SI]

ADCAL,[DI]

AAA

MOV[SI],AL

INCSI

INCDI

LOOPL3

MOVAH,02H

MOVCX,9

DECSI

L4:

MOVDL,[SI]

ORDL,30H

INT21H

DECSI

LOOPL4

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

1.从键盘输入两个十进制数(数据位数超过5位),转换为压缩型BCD码存储,进行压缩型BCD码加法运算后,将结果输出。

2.从键盘输入两个十进制数(设和小于65535),求和后,将结果以十进制和十六进制分别输出。

提示:

转换为二进制数进行计算,再换为十进制数输出;

第一题

DATASEGMENT

NUM1DB30DUP(?

NUM2DB30DUP(?

BCD_NUM1DB30DUP(?

BCD_NUM2DB30DUP(?

RDB30DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETNUM1

MOVAL,30H

MOV[SI],AL

INCSI

MOVAL,30H

MOV[SI],AL

MOVCX,6

L1:

MOVAH,01H

INT21H

INCSI

MOV[SI],AL

LOOPL1

MOVDL,0DH

MOVAH,02H

INT21H

MOVDL,0AH

MOVAH,02H

INT21H

MOVSI,OFFSETNUM1

MOVDI,OFFSETBCD_NUM1

MOVCX,4

LOOP1:

MOVDL,[SI]

SHLDL,1

SHLDL,1

SHLDL,1

SHLDL,1

MOVAL,[SI+1]

ANDAL,0FH

ORDL,AL

MOV[DI],DL

INCSI

INCSI

INCDI

LOOPLOOP1

MOVSI,OFFSETNUM2

MOVAL,30H

MOV[SI],AL

INCSI

MOVAL,30H

MOV[SI],AL

MOVCX,6

L2:

MOVAH,01H

INT21H

INCSI

MOV[SI],AL

LOOPL2

MOVDL,0DH

MOVAH,02H

INT21H

MOVDL,0AH

MOVAH,02H

INT21H

MOVSI,OFFSETNUM2

MOVDI,OFFSETBCD_NUM2

MOVCX,4

LOOP2:

MOVDL,[SI]

SHLDL,1

SHLDL,1

SHLDL,1

SHLDL,1

MOVAL,[SI+1]

ANDAL,0FH

ORDL,AL

MOV[DI],DL

INCSI

INCSI

INCDI

LOOPLOOP2

MOVSI,3

MOVDI,0

MOVCX,4

CLC

L3:

MOVAL,BCD_NUM2[SI]

ADCAL,BCD_NUM1[SI]

DAA

MOVR[DI],AL

INCDI

DECSI

LOOPL3

MOVSI,OFFSETR+3

MOVCX,4

L4:

MOVDL,[SI]

MOVBX,CX

MOVCX,4

SHRDL,CL

ORDL,30H

MOVAH,02H

INT21H

MOVDL,[SI]

ANDDL,0FH

ORDL,30H

MOVAH,02H

INT21H

DECSI

MOVCX,BX

LOOPL4

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

第二题

DATASEGMENT

BUF1DW?

BUF2DW?

BUF3DW?

D_NUMDB10DUP(?

HEX_NUMDB10DUP(?

TABDB'0123456789ABCDEF'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVBUF1,0

MOVBUF2,0

MOVBUF3,0

L1:

MOVAH,01H

INT21H

CMPAL,';'

JEL2

ANDAL,0FH

SALBUF1,1

MOVBX,BUF1

SALBUF1,1

SALBUF1,1

ADDBUF1,BX

MOVAH,0

ADDBUF1,AX

JMPL1

L2:

MOVAH,01H

INT21H

CMPAL,';'

JEL3

ANDAL,0FH

SALBUF2,1

MOVBX,BUF2

SALBUF2,1

SALBUF2,1

ADDBUF2,BX

MOVAH,0

ADDBUF2,AX

JMPL2

L3:

MOVAX,BUF1

ADDAX,BUF2

MOVBUF3,AX

MOVAX,BUF3

MOVSI,OFFSETD_NUM

MOVDI,0

L4:

MOVDX,0

MOVBX,10

DIVBX

MOV[SI],DL

INCSI

INCDI

CMPAX,0

JEL5

JMPL4

L5:

MOVCX,DI

MOVDL,0DH

MOVAH,02H

INT21H

MOVDL,0AH

MOVAH,02H

INT21H

L6:

DECSI

DECDI

MOVDL,[SI]

ORDL,30H

MOVAH,02H

INT21H

LOOPL6

MOVDL,0DH

MOVAH,02H

INT21H

MOVDL,0AH

MOVAH,02H

INT21H

MOVAX,BUF3

MOVBX,16

MOVSI,OFFSETHEX_NUM

MOVDI,0

L7:

MOVDX,0

DIVBX

MOV[SI],DL

INCSI

INCDI

CMPAX,0

JEL8

JMPL7

L8:

MOVCX,DI

MOVBX,OFFSETTAB

L9:

DECDI

DECSI

MOVAL,[SI]

XLAT

MOVDL,AL

MOVAH,02H

INT21H

LOOPL9

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

1.比大小

2.统计人数

第一题

DATASEGMENT

MAXDB10DUP(?

MINDB10DUP(?

ADW0049H,005BH,0045H,00F7H,0098H,00A2H,0074H,0090H,0048H

TABDB'0123456789ABCDEF'

HMAXDB20DUP(?

HMINDB20DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,0000H

MOVCX,9

MOVSI,0

LOOP1:

CMPAX,A[SI]

JAELOOP2

MOVAX,A[SI]

LOOP2:

INCSI

INCSI

LOOPLOOP1

MOVMAX,AX

MOVAX,MAX

MOVSI,OFFSETHMAX

MOVBX,16

MOVDI,0

L4:

MOVDX,0

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

当前位置:首页 > 成人教育 > 自考

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

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