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