编写一个汇编程序,从键盘接收一位十进制n.然后在屏幕上显示n个星号 急急!!

供稿:hz-xin.com     日期:2025-01-13
编写一个汇编程序 从键盘接收一位十进制n,然后在屏

;输入不超过65535的10进制数,将其以16位的形式显示code segment assume cs:code org 100hstart: jmp bbbx dw 0msg1 db 10,13,'please input a number:','$'msg2 db 10,13,' ','$'bbb: push cs pop ds lea dx,msg1 mov ah,9 int 21h lea bx,x mov ax,0 push axagain1: mov ah,1 int 21h cmp al,13 je line0 sub al,30h mov ah,0 mov si,ax pop ax mov cl,10 mov ch,0 mul cx add ax,si push ax jmp again1line0: pop ax mov word ptr[x],ax lea di,msg2 inc di inc di mov cx,4again2: mov ax,word ptr[x] rol ax,1 rol ax,1 rol ax,1 rol ax,1; rol ax,4 mov word ptr[x],ax and ax,000Fh cmp al,9 jg line1 add al,30h mov byte ptr[di],al jmp line2line1: add al,37h mov byte ptr[di],alline2: inc di loop again2 lea dx,msg2 mov ah,9 int 21h mov ah,8 int 21h mov ah,4ch int 21hcode ends end start

;--------------------------------------------
DATA SEGMENT
INPUT_TIPS DB 10, 13, "INPUT THE N (0~8): $"
OUTPUT_TIPS DB 10, 13, "THE N! IS : $"
DATA ENDS
;--------------------------------------------
STACK SEGMENT
;INPUT STACK SEGMENT CODE HERE
STACK ENDS
;--------------------------------------------
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX, DATA
MOV DS, AX
;----------------------------------
MOV DX, OFFSET INPUT_TIPS
MOV AH, 9 ;显示字符串.
INT 21H

MOV AH, 1 ;输入到AL
INT 21H

CMP AL, '0'
JB EXIT
CMP AL, '8'
JA EXIT

SUB AL, '0'
MOV AH, 0

CMP AX, 0
JNZ CMP_1
MOV AX, 1
JMP DISP
CMP_1:
CMP AX, 1
JZ DISP
MOV CX, AX
CALL FACTOR
;----------------------------------
DISP:
PUSH AX
MOV DX, OFFSET OUTPUT_TIPS
MOV AH, 9 ;显示字符串.
INT 21H

POP AX
MOV BX, 10
MOV CX, 0
L1:
MOV DX, 0
DIV BX
PUSH DX
INC CX
AND AX, AX
JNZ L1
L2:
POP DX
ADD DL, 48
MOV AH, 2
INT 21H
LOOP L2
;----------------------------------
EXIT:
MOV AH, 4CH
INT 21H
;==================================
FACTOR PROC NEAR ;阶乘.
DEC CX
CMP CX, 1
JE FACTOR_E
PUSH CX
CALL FACTOR ;递归调用.
POP CX
MUL CX
FACTOR_E:
RET
FACTOR ENDP
;==================================
CODE ENDS
END START
;--------------------------------------------

程序运行时的屏幕显示如下:

C:\MASM>JIE_CH

INPUT THE N (0~8): 0
THE N! IS : 1

C:\MASM>JIE_CH

INPUT THE N (0~8): 2
THE N! IS : 2

C:\MASM>JIE_CH

INPUT THE N (0~8): 3
THE N! IS : 6

C:\MASM>JIE_CH

INPUT THE N (0~8): 5
THE N! IS : 120

C:\MASM>JIE_CH

INPUT THE N (0~8): 4
THE N! IS : 24

C:\MASM>JIE_CH

INPUT THE N (0~8): 8
THE N! IS : 40320

C:\MASM>JIE_CH

INPUT THE N (0~8): 7
THE N! IS : 5040

C:\MASM>JIE_CH

INPUT THE N (0~8): 6
THE N! IS : 720

C:\MASM>

每当系统中产生特定的消息时,钩子就能在第一时间钩住(截获)它,
也就是说钩子过程优先得到消息的控制权。这时钩子过程即可以加工、处理该消息,又可以不作任何改变而继续传递该消息,还可以强制结束这个消息的传递。

汇编语言,键盘任意输入10个1位十进制数,将它们累加求和,把和放在Sum...
首先,程序需要初始化环境,定义一些必要的寄存器变量。这里我们使用CX寄存器来计数,BX寄存器用来存储累加和。程序开始时,CX寄存器被设置为10,表示需要接收10个数字。接下来,程序进入一个循环,这个循环会使用INT 21H中断来读取用户输入。INT 21H是DOS提供的一种处理键盘输入的中断。每次循环中,程序会从...

编写一个汇编程序,从键盘接收一位十进制n.然后在屏幕上显示n个星号 急...
也就是说钩子过程优先得到消息的控制权。这时钩子过程即可以加工、处理该消息,又可以不作任何改变而继续传递该消息,还可以强制结束这个消息的传递。

用汇编语言编写:从键盘输入一个十进制数(100以内),将其转变为二进制数...
jc out1 dec dl out1:int 21h loop jp1 mov ah,1 ;按任意键退出 int 21h mov ax, 4c00h int 21h MAIN ENDP CSEG ENDS END MAIN 0~99都有效 欢迎追问 求满意

用汇编语言写:从键盘输入一个十进制数(100以内),将其转变为二进制数并...
ROL BX,CL ;将BX中的数循环左移4位,也就是把BX最高4位,放到BX的最低4位上去。MOV AL,BL ;将低8位放入AL AND AL,0FH ;取低4位 ADD AL,30H ;加上30H 从这里开始将4位二进制数转成16进制ASCII码,CMP AL,3AH ;加结果是不是少于3A JL mH2 ;是的话,...

汇编编程 从键盘接受一个1位十进制数,显示对应二进制
这个 DEBUG 里面,没有输入功能。输入十进制,也可能会敲错键盘。那么,是由人工控制输入的对、错,还是由程序控制?

用汇编语言编写:从键盘输入一位十进制数(10以内),将其转变为二进制数...
输入:0~9 输出:0000~1001?输出可以是四位吗?

汇编语言 输入两个1位十进制数 乘积
程序主体如下:CODE SEGMENT ASSUME CS:CODE START:MOV AH,0AH INT 21H SUB AL,'0'MOV BL,AL MOV AH,0AH INT 21H SUB AL,'0'MUL BL CMP AX,10 JAE L1 ADD AL,'0'MOV DL,AL MOV AH,02H INT 21H L1:MOV CL,10 DIV CL ADD AL,'0'MOV DL,AL MOV AH,02H INT 21H ADD AH,'...

用汇编语言 设计一个 从键盘输入十个数 ,求每个数所占 百分比的 程序...
int main(){ int digitnum = 0;int alphanum = 0;int spacenum = 0;double totalnum = 0;while(gc = getchar() != EOF){ if(isdigit(gc)) digitnum++;else if(gc == ' ') spacenum++;else if(isalpha(gc)) alphanum++;totalnum++;} totalnum *= 0.01;printf("Space: %lf%%...

帮忙写一个汇编程序,画出流程图,并实现从键盘输入一位数,判断奇偶性...
【接收一个数】I 【判断奇偶数】---奇数 I I I偶数 I 【 显示0 】 I I 【 显示1 】<--- code segment assume cs:code start:mov ah,00h int 16h sub al,30h mov ah,0 mov bl,2 div bl cmp ah,0 jz out0 jmp out1 out0:mov dl,30h mov ah,2h int 21h jmp ...

汇编语言,键盘任意输入10个1位十进制数,将它们累加求和,把和放在Sum...
assume cs:codecode segmentstart: mov cx, 10 mov bx, 0 mov ah,1$0: int 21h sub al,30h ;不做输入有效性检查 add bl,al adc bh,0 ;实际上需要,10个9相加也不超过al的范围 loop $0 mov ax, bx call print mov ah,4ch int 21h;print (ax) in decmialprint...