全球旧事资料 分类
1、编写8086汇编语言程序,将寄存器AX的高8位传送到寄存器BL,低8位传送到寄存
器DL。
答:CODESEGMENT
ASSUMECS:CODE
START:MOVBL,AH
MOVDL,AL
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
2、将寄存器DX的内容按从低位到高位的顺序分成4组,并将各组数分别送到寄存器
ALBLCL和DL中。(例如:DX0ABCDH,分成四组
DL0AHCL0BHBL0CHAL0DH)
答:CODESEGMENT
ASSUMECS:CODE
START:MOVAX,DX
ANDAL,0FH
;处理好最低位组
MOVBL,DL
MOVCL,4
SHRBL,CL
;处理好次低位组
ANDAH,0FH
;暂存次高位组
MOVCL,4
SHRDH,CL
;处理好最高位组
MOVCL,AH
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
3、判断MEM单元的数据,编程将奇数存入MEMA单元,将偶数存入MEMB单元。
答:DATASEGMENT
fMEMDW?
MEMADW?
MEMBDW?
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
SRART:MOVAX,DATA
MOVDS,AX
MOVAX,MEM
;取数
SHRAX,1
JC
PO_1
;移出D0位;是奇数,则转移
MOVMEMB,AX
;存偶数
JMPDONE
PO_1:RCLAX,1
;恢复AX内容
DONE:MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
4、试统计9个数中偶数的个数,并将结果在屏幕上显示。
答:DATASEGMENT
BUFFDB3BH,47H,8DH,75,0A4H,69,2EH,0CCH,200
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETBUFF
;设数据地址指针
MOVCX,9
;数据长度
XORDL,DL
;设统计寄存器DL清零
A1:TESTBYTEPTRSI,1
;判断奇偶
fJNZNEXTINCDLNEXT:INCSILOOPA1ADDDL,30HMOVAH,2
;奇数不统计;统计偶数;移动指针;循环判断,直到所有数据处理完;将统计结果转换为ASCII码;调用DOS功能显示结果
INT21HMOVAX,4C00H
INT21H
CODEENDS
ENDSTART
5、试将一串16位无符号数加密,加密方法是每个数乘以2。(不考虑进位)
答:(1)DATASEGMENT
MEMDW20DUP
;定义20个随机数
DATAENDS
CODESEGMENTASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
MOVCX,LENGTHMEM
;数据长度
LEABX,MEM
;数据地址指针
AA1:MOVAX,BX
;取数
ADDAX,AX或MULAX,2或SHLAX,1或SALAX,1;×2
加密
MOVBX,AXADDBX,2LOOPAA1MOVAX,4C00H
;保存加密后数据;移动地址指针;循环执行
INT21H
CODEENDS
fENDSTART
以上参考答案没考虑数据×2产生的进位。
(2)DATASEGMENT
MEMDW20DUP
;定义20个随机数
MEM1DW40DUP
;考虑加密有进位,结果区留80字节
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
MOVCX,LENGTHMEM;数据长度
LEASI,MEM
;数据地址指针
LEADI,MEM1
;结果区指针
AA1:MOVAX,SI
;取数
MOVBX,2
;×r
好听全球资料 返回顶部