DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
UserName db "Name: $"
CLRF db 10,13,"$"
inputName db 24 dup ("$")
CurYear db "Current Year: $"
inputCurrentYear db 8 dup ("$")
BirYear db "Birth Year: $"
inputBirthYear db 8 dup ("$")
outputName db "Hello, $"
.code
BEGIN:
mov ax,@data
mov ds,ax
mov es,ax
mov al,03h
mov ah, 00h
int 10h
;username input
NameInput:
lea dx,UserName
mov ah, 09h
int 21h
mov inputName,21
lea dx,inputName
mov ah,0ah
int 21h
lea dx,CLRF
mov ah,09h
int 21h
;current year
CurrentYear:
lea dx,CurYear
mov ah,09h
int 21h
mov inputCurrentYear,05
lea dx,inputCurrentYear
mov ah,0ah
int 21h
lea dx,CLRF
mov ah,09h
int 21h
;birth year
BirthYear:
lea dx,BirYear
mov ah,09h
int 21h
mov inputBirthYear,05
lea dx,inputBirthYear
mov ah,0ah
int 21h
lea dx,CLRF
mov ah,09h
int 21h
;subtraction
mov eax, inputCurrentYear
mov ebx ,inputBirthYear
sub eax,ebx
Output:
lea dx, outputName
mov ah,09h
int 21h
lea dx, inputName
mov ah,09h
int 21h
lea dx,CLRF
mov ah,09h
int 21h
mov ah,4ch
int 21h
end BEGIN
我需要帮助,因为我不知道如何将输出转换为十进制值
答案 0 :(得分:0)
还必须转换十进制ASCII的输入以进行计算。第一步是从所有十进制ASCII数中减去30h,第二步是将基数为十的数字系统的所有单个数字的完整值的数字相乘。例如,第二个最低位必须乘以10,第三个最低位必须乘以100,依此类推。最后,我们必须将所有值一起添加。现在我们可以使用这个值了。
对于十进制输出,我们必须除以并将数字拆分成单独的数字,而不是我们必须添加到所有30h以将其转换为ASCII。例如,如果值是十进制1995,那么我们必须将此值除以十进制1000以分隔最高位数1.然后我们必须再次将该值除以100以分离9,依此类推。