80x86汇编习题
题目描述:输入16位的2进制数到BX中
思路:
1,用CX计数16次,清空BX
2,用1号功能逐位输入,遇到回车提前结束
3,输入到AL,右移AL一位到CF,把CF的左移到BX最后一位,循环16次
4,以二进制输出——利用循环移位来解决问题,左移BX最高位到CF标志位,将这位放到DX,转为ACILL码——中断打印,循环
DATAS SEGMENT
DATAS ENDS
STACKS SEGMENT
DW 100H DUP(?)
TOP LABEL WORD
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,STACKS
MOV SS,AX
LEA SP,TOP ;初始化
MOV CX,16 ;输入16位
XOR BX,BX ;清空BX
IN1:
MOV AH,1
INT 21H ;逐个输入
CMP AL,0DH ;遇到回车提前结束
JE OUTT
RCR AL,1 ;右移一位到CF
RCL BX,1 ;把CF的左移到最后一位
LOOP IN1 ;循环
;输出
OUTT:
MOV CX,16 ;循环次数
L1: ROL BX,1 ;左移BX最高位到CF标志位
MOV DL,0 ;清空DX
ADC DL,'0' ;将DL的acill码移动到0位置,加上CF判断位
MOV AH,2
INT 21H ;中断输出DL内容
LOOP L1 ;循环
MOV AH,4CH
INT 21H
CODES ENDS
END START
;输入内容:0110 1100 0011 1011
;输出内容:0110 1100 0011 1011