masm615: 以子程序调用的形式,实现从键盘输入一个四位的十六进制数(其中字母为大写),将其转化为十进制数输出显示。
时间: 2023-07-15 17:13:22 浏览: 127
从键盘输入4位十六进制数,十进制显示
以下是使用MASM汇编语言实现的代码:
```
.model small
.stack 100h
.data
inputMsg db '请输入一个四位的十六进制数(大写字母):$'
outputMsg db '对应的十进制数为:%d$'
inputBuffer db 5
hexNum dw ?
decNum db 6
.code
main proc
mov ax, @data
mov ds, ax
; 输出提示信息
lea dx, inputMsg
mov ah, 9
int 21h
; 读取输入的十六进制数
lea dx, inputBuffer
mov ah, 0Ah
int 21h
; 将十六进制数转化为十进制数
call hexToDec
; 输出转化后的十进制数
lea dx, outputMsg
mov ah, 9
int 21h
mov ah, 2
lea dx, decNum
int 21h
mov ah, 4Ch
int 21h
main endp
; 将十六进制数转化为十进制数
hexToDec proc
push ax
push bx
push cx
push dx
; 将十六进制数的每一位分离出来
mov ax, hexNum
mov bx, 1000h
xor cx, cx
xor dx, dx
div bx
mov cx, ax
mov ax, dx
mov bx, 100h
xor cx, cx
xor dx, dx
div bx
mov cx, ax
mov ax, dx
mov bx, 10h
xor cx, cx
xor dx, dx
div bx
mov cx, ax
mov ax, dx
mov bl, al
; 将每一位转化为十进制数并相加
xor ax, ax
mov al, cl
mov bl, 10
mul bl
mov bl, ch
add al, bl
mov bl, 10
mul bl
mov bl, ah
add al, bl
mov bl, 10
mul bl
mov bl, cl
add al, bl
mov bl, 10
mul bl
mov bl, bh
add al, bl
; 将转化后的十进制数存储在decNum中
mov decNum, al
pop dx
pop cx
pop bx
pop ax
ret
hexToDec endp
end main
```
代码实现了从键盘输入一个四位的十六进制数,并将其转化为十进制数输出显示。其中,`hexToDec`是一个子程序,用于将十六进制数转化为十进制数。
阅读全文