8086汇编习题
正序输出BX内容
题目描述:将BX中的无符号数以二进制形式输出
思路:
1,往bx写入一个数
2,设定循环次数,十六次,BX中有16位,逐位处理
3,利用循环移位来解决问题,左移BX最高位到CF标志位,将这位放到DX,转为ACILL码
4,中断打印,继续循环
DATAS SEGMENT
VAR DW 6C3BH
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 BX,VAR ;往bx写入一个数
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
;输入内容:6C3BH
;输出内容:0110 1100 0011 1011
反转输出BX内容
思路:利用AX和CF作为中介,左移出BX到CF,右移CF到AX,结束之后把AX复制到BX即可。
DATAS SEGMENT
VAR DW 1001110000101111B
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 BX,VAR
MOV CX,16
LL:
ROL BX,1
RCR AX,1
LOOP LL
MOV VAR,AX
MOV BX,VAR ;往bx写入一个数
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