汇编语言怎么从键盘输入一个十进制的两位数,并把它存到数组里面?

供稿:hz-xin.com     日期:2025-01-13
写一个完整的80X86汇编语言程序:键盘输入15个数据(转换成数值,存储到一维数组?

不需要显示出来吗?
你的老师,怎么判断,程序正确与否?

下面那位大哥显然是用单片机汇编语言在回答你啊。 如果你需要8086CPU的汇编指令 以下可以参看:
该程序把buffer1中的'assembly'传到了附加段中的buffer2 需要注释可以留言给我。
DATAS SEGMENT
BUFFER1 DB 'assembly'
DATAS ENDS

EXTRA SEGMENT
BUFFER2 DB 8 DUP(?)
EXTRA ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,ES:EXTRA
START: MOV AX,DATAS
MOV DS,AX
MOV AX,EXTRA
MOV ES,AX
LEA BX,BUFFER1 ;BUFFER1 偏移地址给BX
LEA DI,BUFFER2 ;BUFFER2 偏移地址给SI
CLD
MOV CX,8
MOV AL,[BX]
INC BX
REP STOSB
MOV AX,4C00H
INT 21H
CODES ENDS
END START

以下是输入数组的子程序(注意其数据定义与代码段同段)
;===================================================
; 键盘输入数值数组子程序(数组名为@array,元素个数存放在@num中)
; 可以是负数
INPUTNUM PROC NEAR

PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSHF
; 对数组@array清零
MOV CX,100
MOV AX,0
LEA DI,@ARRAY
REP STOSW
MOV WORD PTR @NUM,0
; 输入的数据以一个空格分隔,以回车符结束输入
LEA DX,@STRA
MOV AH,10
INT 21H
MOV CL,@STRN
MOV CH,0
MOV WORD PTR @STRM,CX
LEA SI,@STR
CLD

LEA DI,@ARRAY
MOV WORD PTR @NUM,0
@STIN:
MOV AX,0
PUSH AX
MOV BYTE PTR @SIGNN,0
@AGAIN1:
CMP WORD PTR @STRM,0
JE @LINE0
LODSB
DEC WORD PTR @STRM
CMP AL,' '
JE @LINE0
CMP AL,'-'
JNE @INPUT1
MOV BYTE PTR @SIGNN,1
JMP @AGAIN1
@INPUT1:
SUB AL,30H
MOV AH,0
MOV BX,AX
POP AX
MOV CL,10
MOV CH,0
MUL CX
ADD AX,BX
PUSH AX
JMP @AGAIN1
@LINE0:
POP AX
CMP BYTE PTR @SIGNN,1
JNE @INPUT2
NEG AX
@INPUT2:
MOV WORD PTR[DI],AX
INC WORD PTR @NUM
CMP WORD PTR @STRM,0
JE @STINEND
INC DI
INC DI
JMP @STIN
@STINEND:
POPF
POP DI
POP SI
POP DX
POP CX
POP BX
POP AX
RET
@STRA DB 255
@STRN DB ?
@STR DB 255 DUP(?)
@STRM DW 0
@ARRAY DW 100 DUP(0)
@NUM DW 0
@CHAR DB ?
@SIGNN DB 0
INPUTNUM ENDP
;=========================================

汇编语言怎么从键盘输入一个十进制的两位数,并把它存到数组里面?_百度...
; 键盘输入数值数组子程序(数组名为@array,元素个数存放在@num中); 可以是负数 INPUTNUM PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI PUSHF ; 对数组@array清零 MOV CX,100 MOV AX,0 LEA DI,@ARRAY REP STOSW MOV WORD PTR ...

C语言编程:从键盘上输入一个十进制数,将其转换成八进制数,然后输?
首先,我们需要定义一个数组来存储转换后的八进制数字。由于一个整数最多包含的数字个数为log8(100)(以100为最大长度),这里我们定义一个长度为100的字符数组来存储八进制数字。此外,为了简化操作,我们定义一个宏`LENGTH`来表示数组的长度。接下来,我们编写一个函数`conversion`,该函数接收一个整数...

c语言编程 从键盘输入一个十进制正整数,将其转换成二至十六任意进制的数...
printf("十六进制:%s\\n", t);return 0;}

用C语言编程,输入一个十进制正整数,输出其对应的十六进制整数。
int main(){ int a,*p;p=&a;scanf("%d",p);printf("%x\\n",*p);return 0;}

编写实现:从键盘输入一个三位十进制整数,然后分别输出该整数的百位...
using namespace std;int main(){ int a;int b,c,d;cout << "请输入一个三位数:" << endl;cin >> a;cout << endl;b=a\/100;c=(a%100)\/10;d=(a%10);cout << "百位:" << b <<endl;cout << "十位:" << c <<endl;cout << "个位:" << d <<endl;return 0;}...

编程,输入一个10进制正整数,然后输出它所对应的八进制数.
可以参考下面的代码:include <stdio.h> int main(int argc, char* argv[]){ int num;scanf("%d",&num);printf("%o",num);return 0;}

编程实现:输入一个十进制数,转换成对应的二进制数、八进制数和十六进制...
int main(){ int a,b,c,d;cout<<"请输入待转换的数:";cin>>a;\/\/二进制分别计算每一位 if(a==0)cout<<a;b=a;c=0;d=1;while(b!=0){ c+=(b%2)*d;\/\/依次把b除以2的余数写在c的对应位置上 b=b\/2;d*=10;} cout<<c<<endl;\/\/八进制和十六进制使用格式化输出即可,oct...

编写一段程序,输入一个十进制数输出一个八进制数
C语言 include <stdio.h> int main(){ int a = 0;char b;char c;printf("十进制的数是:");scanf("%d",&a);b = (char)(a\/8);c = (char)(a%8);printf("八进制的数是:");printf("%d",b);printf("%d\\n",c);} 运行结果是:十进制的数是:50 八进制的数是:62 Press ...

C语言如何输入十进制整数?
C代码和运行结果如下:输入十进制整数,输出其十进制、八进制和十六进制形式 附源码:include <stdio.h> int main() { int n;scanf("%d", &n);printf("十进制:%d\\n", n);printf("八进制:%o\\n", n);printf("十六进制:%x\\n", n);return 0;} ...

C语言 从键盘输入一个十进制整型数据,计算并输出其各位上数字之和(忽...
printf("输入一个数字:"); scanf("%d",&i); if(i<0) i=-i; while(i>=10) { sum+=i%10; i\/=10; } sum+=i; printf("各位之和为%d\\n",sum);} 本回答由电脑网络分类达人 系统推荐 举报| 答案纠错 | 评论 7 0 zelon19890311 采纳率:61% 来自团队:电脑软硬件 擅长: 编程语言 出国\/留学...