⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 e7.asm

📁 汇编语言写的输入任意个数
💻 ASM
字号:
DATA segment 
NUM dw 20 dup(?);存输入数列 
i dw 0 ;数列个数  
A DB ?;输出16进制的4位是的判断数
rec db 5 dup(?) ;输出缓存 
DATA ENDS 
code segment 
assume CS:code,DS:DATA 
start: 
MOV AX,DATA 
MOV DS,AX 
MOV SI,0;NUM的偏移量初始化 
MOV BX,0;存数的中间量,初始值置0 
input: 
MOV AH,01H 
INT 21H 
CMP AL,20H;遇到空格写数据 
je write1 
CMP AL,0DH;遇到回车写最后一个数据 
je write2 
sub AL,30H;若不是空格,回车
MOV CL,AL ;先把值传到CX中
MOV CH,00H;CX中的高位0
MOV AX,BX ;互换
MOV BX,0AH;BX=10
MUL BX ;结果传到DX+AX
MOV BX,AX ;互换
ADD BX,CX ;加新的数
JMP input ;
write1:
MOV [NUM+SI],BX ;存数
ADD SI,2 ;指向下一个
INC i ;数的个数加一
MOV BX,0 ;存数的中间量,初始值置0 
JMP input ;

write2:  ;
MOV [NUM+SI],BX ;存数
ADD SI,2 ;指向下一个
INC i ;数的个数加一
MOV DL,0AH;换行
MOV AH,02H
INT 21H 

 
 

  
MOV CX,i ;循环次数
dec CX ;先减一
loop1: 
MOV DI,CX ;存着CX
MOV BX,0 
loop2: 
MOV AX,NUM[BX] 
CMP AX,NUM[BX+2] ;比较
ja continue ;比较下一个
XCHG AX,NUM[BX+2] ;交换
MOV NUM[BX],AX ;
continue: 
ADD BX,2 ;下一个数
loop loop2 
MOV CX,DI 
loop loop1 
 
 
mov cx,i 
mov di,0 
loopnum: 
mov ax,[num+di] 
add di,2 
mov bx,10 
mov si,4 
changenum: ;二进制->BCD 
mov dx,0 
div bx 
mov [rec+si],dl 
dec si 
cmp ax,0 
ja changenum 
outputnum: ;输出(从initnum开始,做预备工作) 
inc si 
mov dl,[rec+si] 
add dl,30h 
mov ah,02h 
int 21h 
cmp si,4 
jb outputnum 
mov dl,20h 
mov ah,02h 
int 21h 
loop loopnum 

MOV AH,02H;回车和换行
MOV DL,0AH
INT 21H
MOV DL,0DH
INT 21H  

 
MOV CX,i;
MOV DI,0;
loopNUM2: 
MOV BX,[NUM+DI];
ADD DI,2;
MOV A,4;
CHangeNUM2: ;
ROL BX,1;
ROL BX,1;
ROL BX,1
ROL BX,1;
MOV DL,BL;
AND DL,0FH;
ADD DL,30H;
CMP DL,3AH;
JL PRINT
ADD DL,7H;
PRINT:MOV AH,02H;
INT 21H
SUB A,1
CMP A,0
ja CHangeNUM2;
MOV DL,20H;
MOV AH,02H
INT 21H
loop loopNUM2 ;
 
MOV AH,02H;回车和换行
MOV DL,0AH
INT 21H
MOV DL,0DH
INT 21H 

 


MOV AH,4CH;结束
INT 21H 
code ENDS 
end start 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -