从键盘输入一个带符号字节数据(如-56)存入M字节内存单元,然后将此数据从M字节单元中取出,在显示器上以十进制形式显示输出。汇编语言代码
时间: 2023-06-06 20:06:33 浏览: 89
我可以提供汇编语言的代码,以下是8086汇编语言代码:
;将带符号字节数据存入M字节内存单元
MOV AH, 0 ;开始读取一个字节
INT 21h ;从键盘读取一个字节
MOV BL, AL ;将读取的数据存储到BL寄存器中
MOV AH, 0 ;将AH寄存器清零
INT 21h ;换行
;将读取的数据从M字节单元中取出,并在显示器上以十进制形式显示输出
MOV AL, BL ;将BL寄存器中的数据存储到AL寄存器中
XOR AH, AH ;将AH寄存器清零,确保AL寄存器中的数为正数
CALL display ;调用显示程序
;显示程序
display:
PUSH AX ;保存AX寄存器的值
PUSH BX ;保存BX寄存器的值
MOV BX, 10 ;将进制值存储到BX寄存器中
MOV CX, 0 ;将CX寄存器清零
CMP AL, 0 ;如果AL寄存器中的数为0,则直接输出0并返回
JE zero
CMP AL, 0 ;如果AL寄存器中的数为负数,则将其转换为正数
JL convert
JMP positive
;数为0时的处理
zero:
MOV DL, '0' ;将字符'0'存储到DL寄存器中
MOV AH, 2 ;显示字符
INT 21h ;显示字符
JMP finish
;负数转换为正数的处理
convert:
NEG AL ;将AL寄存器中的数变为正数
MOV DL, '-' ;将字符'-'存储到DL寄存器中
MOV AH, 2 ;显示字符
INT 21h ;显示字符
;正数的处理
positive:
DIV BX ;将AL寄存器中的数除以进制值BX,余数存储到AH寄存器中,商存储到AL寄存器中
ADD AH, 48 ;将余数转换为对应的字符
MOV DL, AH ;将余数存储到DL寄存器中
MOV AH, 2 ;显示字符
INT 21h ;显示字符
ADD CX, 1 ;CX寄存器加1,记录数字的位数
CMP AL, 0 ;如果商为0,则跳转到完成处理的过程
JNE positive
;完成处理
finish:
ADD CX, 1 ;CX寄存器加1,记录符号和数字的位数
MOV AH, 2 ;显示回车
MOV DL, 0DH
INT 21h ;显示回车
MOV DL, 0AH ;显示换行
INT 21h ;显示换行
POP BX ;恢复BX寄存器的值
POP AX ;恢复AX寄存器的值
RET ;返回主程序
阅读全文