8086汇编程序_将寄存器AX的高8位传送到寄存.doc
《8086汇编程序_将寄存器AX的高8位传送到寄存.doc》由会员分享,可在线阅读,更多相关《8086汇编程序_将寄存器AX的高8位传送到寄存.doc(8页珍藏版)》请在冰豆网上搜索。
上机作业
1、编写8086汇编程序,将寄存器AX的高8位传送到寄存器BL,AX的低8位传送到寄存器DL。
CODESEGMENT
ASSUMECS:
CODE
START:
MOVBL,AH;寄存器AX的高8位传送到寄存器BL
MOVDL,AL;AX的低8位传送到寄存器DL
INT20H;结束
CODEENDS
ENDSTART
2、将DX寄存器的内容从低位到高位顺序分成4组,且将各组数分别送到寄存器AL、BL、CL和DL。
MOVAL,0
MOVBL,0
MOVCL,04
ADDAL,DL
ADDBL,DL
ANDAL,0FH
ANDBL,0F0H
SHLBL,CL
MOVCL,0
ADDCL,DH
ADDDL,DH
ANDCL,0FH
ANDDL,0F0H
MOVAH,CL
MOVCL,4
SHLDL,CL
MOVCL,AH
3、判断MEN单元的数据,编程将奇数存入MENA单元,将偶数存入MENB单元。
DATASSEGMENT
MEN DW 11H,12H,13H,14H,15H,16H
MENA DW5DUP(?
)
MENB DW5DUP(?
)
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
MOVCX,6
MOVSI,OFFSETMEN
AA1:
MOV BX,[SI]
INC SI
TEST BX,0001H
JZ AA2
MOV MENA,BX
LOOP AA1
AA2:
MOV MENB,BX
INC SI
LOOP AA1
MOV AH,4CH
INT 21H
CODESENDS
ENDSTART
4、试统计9个数中的偶数的个数,并将结果在屏幕上显示。
DATASSEGMENT
DATADB1,4,5,13,16,21,28,35,41;
DATASENDS
STACKSSEGMENT;
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
MOVCX,9
MOVDX,0
LEASI,DATA
PANDUAN:
MOVAL,[SI]
SHRAL,1
JC NEXT
INCDL
NEXT:
INCSI
LOOPPANDUAN
CMPCX,0
JNZ PANDUAN
MOVAH,02H
ADDDL,30H
INT21H;
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
5、试将一串16位无符号数加密,加密方法是将每个数乘2。
DATASSEGMENT
STRING1DB'1234567891234567$'
STRING2DB16DUP(?
)
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
MOVES,AX
MOVCX,16
LEASI,STRING1
LEADI,STRING2
L:
LODSB
SHLAL,1
STOSB
LOOPL
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
6、根据DL寄存器的D3位,完成两个压缩BCD数X和Y的加减运算。
D3=0时,作加法;D3=1时,作减法,并将结果存入寄存器DL。
DATASSEGMENT
XDB2
YDB1
DATASENDS
STACKSSEGMENT
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
MOVAL,Y
TESTDL,08H
JZ JIA
SBBAL,X
DAS
JMPJIAN
JIA:
ADCAL,X
DAA
MOVDL,AL
JMPLOP
JIAN:
MOVDL,AL
JMPLOP
LOP:
MOVAH,02H
ADDDL,30H
INT21H
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
7、统计BLOCK1和BLOCK2两个单元数据中,对应位不同的有多少位?
DATASSEGMENT
BLOCK1DB'123456789'
BLOCK2DB'987456123'
DATASENDS
STACKSSEGMENT
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
MOVBX,0
MOVCX,9
LEASI,BLOCK1
LEADI,BLOCK2
LOP:
LODSB
CMPAL,[DI]
JE NEXT
INCBX
NEXT:
INCDI
DECCL
JNZLOP
MOVAH,2
ADDBL,30H
MOVDL,BL
INT21H;
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
8、完成10个压缩BCD数相加,且将结果显示出来。
DATASSEGMENT
DATADB0,1,2,3,4,5,6,7,8,9;
DATASENDS
STACKSSEGMENT
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
MOVCX,10
LEASI,DATA
MOVAL,0
LOP:
ADCAL,[SI]
DAA
JMPNEXT
NEXT:
INCSI
LOOPLOP
MOVCL,4
MOVBL,AL
SHRAL,CL
MOVAH,02H
ADDAL,30H
MOVDL,AL
INT21H
ANDBL,0FH
MOVAH,02H
ADDBL,30H
MOVDL,BL
INT21H
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
9、编写程序,将一串凌乱的字母按从小到大的顺序排列。
DATASSEGMENT
DATA DB 'gfed$'
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
MOV SI,1
LOP1:
MOV DI,SI
INC DI
MOV AL,DATA[SI-1]
LOP2:
CMP AL,DATA[DI-1]
JBE LOP3
XCHG DATA[DI-1],AL
MOV DATA[SI-1],AL
LOP3:
INC DI
CMP DI,4
JBE LOP2
INC SI
CMP SI,3
JBE LOP1
SHOW:
MOV AH,9
MOV DX,OFFSETDATA
INT 21H
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
试编程统计寄存器AX