.model small
.stack
.data
sum dw ?
.code
.startup
call recv ;从键盘接受一个数,比如100;
mov cx,bx ;一百作为循环次数;
xor ax,ax;
again:
add ax,cx ;cx每次自动减去1,cx还作为被加数,0+100+99+.....0;
loop again ;
mov sum ,ax
mov bx,ax;
call printr; //调用打印函数。
.exit
recv proc near
mov bx,0
newchar:
mov ah,1;
int 21h;
sub al,30h;
jl exit;
cmp al,9d;
jg exit;
cbw;
xchg ax,bx;
mov cx,10d;
mul cx;
xchg ax,bx;
add bx,ax;
jmp newchar;
exit:
ret;
recv endp;
;加上以下这段
printr proc
mov ch ,4 ;ch中表示4个字符;
rotate:
mov cl,4 ;在cl中保存4,每次右移四位.
rol bx,cl; ;右移.
mov al,bl ;将bx的低四位放进al,用于显示.
and al,0fh ;
add al,30h ;0-9二进志转换成16进制后要加30h换成asII码的符号.
cmp al,3ah ;3ah表示大于9,就是39h
jl print
add al,7h ;不是0-9要在加上7h
print:
mov dl,al ;dl中存放将要被显示的字符;
mov ah,2 ;ah中放具体功能.
int 21h
dec ch ;将ch中的值减一,表示完成一个字符显示.
jnz rotate ;符号标志位不为0,跳转.
ret
printr endp
.stack
.data
sum dw ?
.code
.startup
call recv ;从键盘接受一个数,比如100;
mov cx,bx ;一百作为循环次数;
xor ax,ax;
again:
add ax,cx ;cx每次自动减去1,cx还作为被加数,0+100+99+.....0;
loop again ;
mov sum ,ax
mov bx,ax;
call printr; //调用打印函数。
.exit
recv proc near
mov bx,0
newchar:
mov ah,1;
int 21h;
sub al,30h;
jl exit;
cmp al,9d;
jg exit;
cbw;
xchg ax,bx;
mov cx,10d;
mul cx;
xchg ax,bx;
add bx,ax;
jmp newchar;
exit:
ret;
recv endp;
;加上以下这段
printr proc
mov ch ,4 ;ch中表示4个字符;
rotate:
mov cl,4 ;在cl中保存4,每次右移四位.
rol bx,cl; ;右移.
mov al,bl ;将bx的低四位放进al,用于显示.
and al,0fh ;
add al,30h ;0-9二进志转换成16进制后要加30h换成asII码的符号.
cmp al,3ah ;3ah表示大于9,就是39h
jl print
add al,7h ;不是0-9要在加上7h
print:
mov dl,al ;dl中存放将要被显示的字符;
mov ah,2 ;ah中放具体功能.
int 21h
dec ch ;将ch中的值减一,表示完成一个字符显示.
jnz rotate ;符号标志位不为0,跳转.
ret
printr endp
