.386
DATA SEGMENT USE16 ;定义源数据段,数据段名称为DATA
MSR DB "PLEASE INPUT DATA:$"
DATA ENDS
CODE SEGMENT USE16 ;定义代码段, 代码段名称为CODE
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA ;装载数据段
MOV DS,AX
MOV AH,09H ;显示提示信息PLEASE INPUT DATA:
MOV DX,OFFSET MSR
INT 21H
MOV AH,01H ;从键盘输入一个一位十进制数,该数据保存在AL中
INT 21H
MOV BL,AL
CMP BL,'A'
JGE ASS
SUB BL,30H ;求出该十进制数
JMP BG
ASS:
SUB BL,37H
MOV AH,02H ;输出回车符号
MOV DL,0Dh
INT 21H
MOV AH,02H ;输出换行符号
MOV DL,0Ah
INT 21H
BG:
MOV AH,02H ;输出回车符号
MOV DL,0Dh
INT 21H
MOV AH,02H ;输出换行符号
MOV DL,0Ah
INT 21H
CALL XIANSHI ;调用子程序
JMP TUICHU ;跳到退出程序
XIANSHI PROC ;子函数定义
PUSHA ;所有寄存器压入堆栈,保护寄存器初始值
MOV CX,0000H ;输入循环次数
MOV CL,08H
AG: ;将BL寄存器中的数值以二进制形式输出
ROL BL,1 ;循环左移一位,后最高位进入C标志
JC PRINT1 ;C标志为一,跳到PRINT-1输入1,否则向下执行输出0
MOV DL,'0'
MOV AH,02H
INT 21H
DEC CX ;CX寄存器的值减一
JNZ AG ;CX寄存器的不等于1,继续执行AG,否则跳到TUI
JMP TUI
PRINT1:
MOV DL,'1'
MOV AH,02H
INT 21H
DEC CX
JNZ AG
TUI:POPA
RET
XIANSHI ENDP
TUICHU: MOV AH,4CH ;返回DOS状态,固定结构
INT 21H
CODE ENDS
END START
DATA SEGMENT USE16 ;定义源数据段,数据段名称为DATA
MSR DB "PLEASE INPUT DATA:$"
DATA ENDS
CODE SEGMENT USE16 ;定义代码段, 代码段名称为CODE
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA ;装载数据段
MOV DS,AX
MOV AH,09H ;显示提示信息PLEASE INPUT DATA:
MOV DX,OFFSET MSR
INT 21H
MOV AH,01H ;从键盘输入一个一位十进制数,该数据保存在AL中
INT 21H
MOV BL,AL
CMP BL,'A'
JGE ASS
SUB BL,30H ;求出该十进制数
JMP BG
ASS:
SUB BL,37H
MOV AH,02H ;输出回车符号
MOV DL,0Dh
INT 21H
MOV AH,02H ;输出换行符号
MOV DL,0Ah
INT 21H
BG:
MOV AH,02H ;输出回车符号
MOV DL,0Dh
INT 21H
MOV AH,02H ;输出换行符号
MOV DL,0Ah
INT 21H
CALL XIANSHI ;调用子程序
JMP TUICHU ;跳到退出程序
XIANSHI PROC ;子函数定义
PUSHA ;所有寄存器压入堆栈,保护寄存器初始值
MOV CX,0000H ;输入循环次数
MOV CL,08H
AG: ;将BL寄存器中的数值以二进制形式输出
ROL BL,1 ;循环左移一位,后最高位进入C标志
JC PRINT1 ;C标志为一,跳到PRINT-1输入1,否则向下执行输出0
MOV DL,'0'
MOV AH,02H
INT 21H
DEC CX ;CX寄存器的值减一
JNZ AG ;CX寄存器的不等于1,继续执行AG,否则跳到TUI
JMP TUI
PRINT1:
MOV DL,'1'
MOV AH,02H
INT 21H
DEC CX
JNZ AG
TUI:POPA
RET
XIANSHI ENDP
TUICHU: MOV AH,4CH ;返回DOS状态,固定结构
INT 21H
CODE ENDS
END START