DATA SEGMENT ;数据段.
MSG1 DB 13, 10, 'Please Input N (0~9, A~F): $'
MSG2 DB 13, 10, 'I can not count so much ! $'
MSG3 DB 13, 10, 'SUM = $'
DATA ENDS;----------------------------------------------
CODE SEGMENT ;代码段.
ASSUME CS: CODE, DS: DATA
START:
MOV AX, DATA
MOV DS, AX
_IN_X: MOV DX, OFFSET MSG1 ;Please Inpu
t MOV AH, 9
INT 21H
MOV AH, 1 ;输入字符.
INT 21H
CMP AL, '0'
JB _IN_ERR ;小于'0',输入错误.
CMP AL, '9' JA _IN_X_AF ;大于'9'
SUB AL, '0'
MOV BL, AL
JMP _IN_Y
_IN_X_AF: ;大于'9'
CMP AL, 'A'
JB _IN_ERR ;小于'A',输入错误.
CMP AL, 'F'
JA _IN_ERR ;大于'F',输入错误.
SUB AL, 37H
MOV BL, AL
_IN_Y:
MOV DX, OFFSET MSG1 ;Please Input
MOV AH, 9
INT 21H
MOV AH, 1 ;输入字符.
INT 21H
CMP AL, '0'
JB _IN_ERR ;小于'0',输入错误.
CMP AL, '9'
JA _IN_Y_AF ;大于'9'
SUB AL, '0'
JMP _SUM
_IN_Y_AF: ;大于'9'
CMP AL, 'A'
JB _IN_ERR ;小于'A',输入错误.
CMP AL, 'F'
JA _IN_ERR ;大于'F',输入错误.
SUB AL, 37H
_SUM:
ADD AL, BL ;相加
PUSH AX MOV DX, OFFSET MSG3 ;SUM =
MOV AH, 9
INT 21H
POP AX
DISP:;以16进制形式显示
MOV AH, 0
MOV BL, 16
DIV BL
PUSH AX
CMP AL, 10
JB A30
ADD AL, 7
A30:
ADD AL, 30H
MOV DL, AL
MOV AH, 2
INT 21H
POP AX
CMP AH, 10
JB A302
ADD AH, 7
A302:
ADD AH, 30H
MOV DL, AH
MOV AH, 2
INT 21H
MOV DL, 'H'
MOV AH, 2
INT 21H
JMP EXIT;
_IN_ERR:
MOV DX, OFFSET MSG2;can not count so much !
MOV AH, 9
INT 21H
EXIT:
MOV AH, 4CH
INT 21H
CODE ENDS
END START
并解释一此程序的设计思想和流程图
基于汇编语言,下面程序修改为十六进制相加结果十进制输出,尽量少...
MSG2 DB 13, 10, 'I can not count so much ! $'MSG3 DB 13, 10, 'SUM = $'DATA ENDS ;--- CODE SEGMENT ;代码段 . ASSUME CS: CODE, DS: DATA START:MOV AX, DATA MOV DS, AX _IN_X:MOV DX, OFFSET MSG1 ;Please Input MOV AH, 9 INT...
汇编语言:编一程序把键入的十六进制数转化 成十进制数。要求 1:在屏 ...
编一程序,把键入的十六进制数,在屏幕上用十进制数显示出来。键入的十六进制数,不限位数。如超出四位,只将最后四位做转换并显示。若键入非十六进制数,则不予显示,等待继续输入。键入回车符,结束输入。程序如下:
...位十六进制数相加显示结果,要求结果显示为十进制数
dseg segment Buf1db4, ?, 4 dup( ? )Ermsgdb'Input error, input again!', 0ah, 0dh, '$'flagdb0 num1db?dseg ends sseg segment stack dw 512 dup( ? )sseg ends cseg segment assume ds:dseg, cs:cseg, ss:sseg BEGIN:mov ax, dseg mov ds, ax call inputnum mov num1,...
汇编语言中如何将十六进制数结果转换成十进制字符输出?
则可显示出1.如把DL后的值改成35H则可显示出5了.而用显存方式则要送到B800H:0开始的单元,还要注意它是按照字符和显示属性的顺序来写的,也就是显示一个字符要用两个字节,前面这个字节控制要显示的字符,后面这个字节控制显示属性(颜色,闪烁,高亮度等).
汇编语言,如何将输入的十六进制数转换成十进制数输出
输入一个多位十六进制数,显示等值的十进制。输入字符,需要减去 37H 或 30H,变换为十六进制数字。再组成一个多位数。显示之前,则需要相反的变化。本程序具有对输入数据进行合法性判断的功能。输入非十六进制数的符号时,本程序将不做反应。
汇编语言如何编程16进制1位数相加?
汇编语言编程16进制1位数相加的过程,可以按照逻辑条件进行分类输出。首先,我们定义两个变量A和B,用于存放16进制的一位数。接下来,利用条件判断语句,我们来实现相加的功能。当A和B的和大于等于10时,程序会进行一系列的判断,以确定和的值,再输出相应的字符。如果A和B的和等于10,程序将输出“A”...
如何用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 ...
运用汇编语言怎样以2进制、8进制、10进制、16进制方式输出10进制的数...
首先,通过`assume`语句定义代码段`code`和数据段`data`,以及堆栈段`stack`。数据段用于存放待转换的十进制数,堆栈段用于临时存储中间结果。接下来定义了转换函数`dtoc`,用于将十进制数转换为各种进制表示。函数中使用了子程序调用方式,首先将输入数和输出字符串地址传递给函数,并在函数内部进行转换...
汇编语言 实现从键盘上接收两个一位十六进制数据,求其和,并以十进制...
;输入十六进制数字,大小写随意 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 ;...
8086汇编语言编写,键盘输入4位16进制数,屏幕输出对应的十六进制数,十进...
30h int 10h loop b0 mov al,'B' int 10h retprintBin endpprintDec proc near push bx xor cx, cx mov bx, 10d0: xor dx, dx div bx xor dx, 0e30h push dx inc cx cmp ax, 0 jnz d0d1: pop ax int 10h loop d1 ...