汇编语言 实现从键盘上接收两个一位十六进制数据,求其和,并以十进制形式显示出来.

如题所述

第1个回答  2012-06-08
DATAS SEGMENT
buf db 0ah,0dh,?,?,?,'$'
DATAS ENDS

STACKS SEGMENT
dw 10 dup(0)
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX

mov cx,2
lea si,buf+2
a4: mov ah,1
int 21h
cmp al,'9'
ja a1
sub al,30h
jmp a2
a1:cmp al,'Z'
ja a3
sub al,37h
jmp a2
a3:sub al,57h
a2:mov [si],al
inc si
dec cx
jnz a4
;输入十六进制数字,大小写随意
mov al,buf+2
add al,buf+3
;加法
mov bl,100
cbw
div bl
add al,30h
mov buf+2,al
;十进制百位
mov al,ah
mov bl,10
cbw
div bl
add al,30h
mov buf+3,al
add ah,30h
mov buf+4,ah
;十进制十位、个位
lea dx,buf
mov ah,9
int 21h
;显示
MOV AH,4CH
INT 21H
CODES ENDS
END START本回答被网友采纳
第2个回答  2012-06-08
;只能用大写字母数字,测试通过
ASSUME CS:CODES,DS:DATAS,SS:STACKS

DATAS SEGMENT
buf db 0ah,0dh,?,?,0ah,0dh,'$'
DATAS ENDS

STACKS SEGMENT
dw 10 dup(0)
STACKS ENDS

CODES SEGMENT

START:
MOV AX,DATAS
MOV DS,AX

mov ah,1
int 21h
xor ah,ah

a1: cmp al,'A'
jae a2
sub al,30h
jmp a3
a2: sub al,37h

a3: lea si,buf
mov [si+2],al

mov ah,1
int 21h
xor ah,ah

a4: cmp al,'A'
jae a5
sub al,30h
jmp a6
a5: sub al,37h

a6: add al,[si+2]
xor ah,ah
cmp al,9
jna a7
mov bl,10
div bl
xchg al,ah
a7: add ax,3030h
mov [si+2],ah
mov [si+3],al

lea dx,buf
mov ah,9
int 21h

; jmp START ;测试用

ret
CODES ENDS
第3个回答  2012-06-08
mov cx,2
lea si,buf+2
a4: mov ah,1
int 21h
cmp al,'9'
ja a1
sub al,30h
jmp a2
a1:cmp al,'Z'
ja a3
sub al,37h
jmp a2
a3:sub al,57h
a2:mov [si],al
inc si
dec cx
jnz a4
;输入十六进制数字,大小写随意
mov al,buf+2
add al,buf+3
;加法
mov bl,100
cbw
div bl
add al,30h
mov buf+2,al
;十进制百位
mov al,ah
mov bl,10
cbw
div bl
add al,30h
mov buf+3,al
add ah,30h
mov buf+4,ah
;十进制十位、个位
lea dx,buf
mov ah,9
int 21h
;显示
MOV AH,4CH
INT 21H
CODES ENDS
END START

汇编语言 实现从键盘上接收两个一位十六进制数据,求其和,并以十进制...
;输入十六进制数字,大小写随意 mov al,buf+2 add al,buf+3 ;加法 mov bl,100 cbw div bl add al,30h mov buf+2,al ;十进制百位 mov al,ah mov bl,10 cbw div bl add al,30h mov buf+3,al add ah,30h mov buf+4,ah ;十进制十位、个位 lea dx,buf mov ah,9 int 21h ;显...

用汇编语言编写程序从键盘输入两个一位十六进制数相加显示结果,要求...
jne Next2 cmp flag, 0 je Next3 Next2:mov flag, 1 mov [si], al add byte ptr[si], '0'inc si Next3:

汇编语言:编一程序把键入的十六进制数转化 成十进制数。要求 1:在屏 ...
编一程序,把键入的十六进制数,在屏幕上用十进制数显示出来。键入的十六进制数,不限位数。如超出四位,只将最后四位做转换并显示。若键入非十六进制数,则不予显示,等待继续输入。键入回车符,结束输入。程序如下:

汇编语言程序设计题
请各位达人帮忙,题目如下:从键盘上输入2个10位数以内(位数可变)十六进制数,对其求和并显示结果,程序运行时提示输入加数和被加数,求完和显示结果后,显示继续和退出。非常谢谢!... 请各位达人帮忙,题目如下:从键盘上输入2个10位数以内(位数可变)十六进制数,对其求和并显示结果,程序运行时提示输入加数和被加数,求完和...

汇编语言怎样实现从键盘输入一个十六进制数打印出其对应的十进制?
main proc near Begin:call Input mov dl, 0ah mov ah, 02h int 21h mov dl, 0dh int 21h call ToDec mov dl, 0ah int 21h mov dl, 0dh int 21h jmp Begin Exit:mov ah, 4ch int 21h ret main endp Input proc near mov dh, 00h;mov bx, 0000h Loop1:cmp dh, 03h jg Ret...

汇编语言中如何将十六进制数结果转换成十进制字符输出?
MOV AH,02H MOV DL,31H INT 21H 则可显示出1.如把DL后的值改成35H则可显示出5了.而用显存方式则要送到B800H:0开始的单元,还要注意它是按照字符和显示属性的顺序来写的,也就是显示一个字符要用两个字节,前面这个字节控制要显示的字符,后面这个字节控制显示属性(颜色,闪烁,高亮度等).

2.从键盘输入两个1位十进制数,计算这两个数之和,并将结果在屏幕上显示出...
CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV DX,OFFSET INFOR1 MOV AH,09H INT 21H MOV AH,01H INT 21H SUB AL,30H MOV BL, AL MOV DX,OFFSET INFOR2 MOV AH,09H INT 21H MOV AH,01H SUB AL,30H XOR AH,AH ADD...

如何用51单片机汇编语言编写一个将十六进制数转换成十进制数,并在七...
LJMP MAIN ORG 001BH LJMP T1ISR ;扫描显示 ORG 0030H MAIN:MOV SP,#5FH MOV TMOD,#10H MOV TH1,#0ECH MOV TL1,#078H MOV 33H,#10H MOV 34H,#10H MOV 35H,#10H MOV 36H,#10H SETB TR1 SETB ET1 SETB EA MOV KEYVAL,50H LOOP:LCALL DATCHG JB P1.0,LOOP1 JNB P1.0,INC ...

汇编语言怎样将内存中的数据在屏幕上以十进制形式显示出来
mov ax,num ;取内存数到AX call show ;显示十进制形式 mov ah,7 ;暂停 int 21h MOV AX,4C00H ;退出程序 INT 21H show:xor cx,cx mov bx,10 nx1:xor dx,dx div bx or dx,0e30h inc cx push dx cmp ax,0 jnz nx1 nx2: pop ax int 10h loop nx2 ret CODES ENDS END START ...

编程从键盘输入两个一位十进制数,计算二者之和
;编程从键盘输入两个一位十进制数, 计算二者之和,;如果二者之和在0到9之间(包含0和9), 在屏幕上输出A;;在9到15之间(即大于9小于等于15), 在屏幕上输出B;;大于15, 则在屏幕上输出C.;从键盘输入一个一位十进制数,并将结果显示在屏幕上 DATA SEGMENT ;定义源数据段, 数据段名称为DATA...

相似回答
大家正在搜