⑴ 用汇编语言编制一个计算从2开始的N个偶数之和,将结果显示出来
CODESEGMENT
ASSUMECS:CODE
START:PUSHCS
POPDS
PUSHCS
POPES
MOVBP,0
@0:
MOVAH,1
INT21H
CMPAL,13
JE@1
SHLBP,1
MOVDI,BP
SHLBP,1
SHLBP,1
ADDBP,DI
ANDAL,0FH
XORAH,AH
ADDBP,AX
JMP@0
@1:
MOVCX,BP
XORAX,AX
@2:
ADDAX,CX
LOOP@2
SHLAX,1
CALLLFCR
CALLDSPAX
MOVAH,4CH
INT21H
;=======================================
DSPAXPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHF
XORCX,CX
MOVBX,10
@DSPAX1:
XORDX,DX
DIVBX
INCCX
ORDX,30H
PUSHDX
CMPAX,0
JNE@DSPAX1
MOVAH,2
@DISPAX2:
POPDX
INT21H
LOOP@DISPAX2
POPF
POPDX
POPCX
POPBX
POPAX
RET
DSPAXENDP
;==================================
LFCRPROCNEAR
PUSHAX
PUSHDX
MOVAH,2
MOVDL,13
INT21H
MOVDL,10
INT21H
POPDX
POPAX
RET
LFCRENDP
;================================
CODEENDS
ENDSTART
⑵ 请教“求1到100之间所有偶数的和”的汇编语言程序是什么
int
beven(int
num){return
num%2?0:num;}
int
main()
{
int
i
=
0,
sum
=
0;
for
(i=0;
i<=100;
i++)
{
sum
+=
beven(i);
}
printf("100以内(含100)偶数和为%d\n",
sum);
return
0;
}
⑶ 汇编程序:求1到100中偶数的和
MOV CX,50
MOV AX,0
MOV BX,2
AGAIN: ADD AX,BX
INC BX
INC BX
LOOP AGAIN
⑷ 用汇编语言编写子程序,计算10以内所有奇数之和与所有偶数之和
assume cs:code ;将CS段寄存器与code段关联
code segment ;code段
start:
mov bl,10 ;这里用AL来传送多少以内的数字
call sub1 ;调用子程序
mov ax,4c00h
int 21h
;================================================
;bl送入计算范围,比如0~10,在主程序里面只要把bl设置成10
;用bh返回偶数之和,用bl返回奇数之和
sub1:
push ax
push cx
push dx
dec bl
mov bh,0
mov cx,bx ;设置循环次数
mov dl,2 ;除数
mov ax,2 ;第一个数字,为什么要使第一个数字等于2而不是0呢?因为0/2会溢出
mov bx,1 ;初始籦bx bh=0 bl=1,0000 0001=1
s1:
push ax ;把ax暂存一下,分别在jishu和oushu里面还原,因为这里要进行除法,会改变AX
div dl ;数以2看有没有余数
cmp ah,0
je oushu
jishu:
pop ax
add bl,al
jmp short sub_ok
oushu:
pop ax
add bh,al
sub_ok:
inc ax
loop s1
pop dx
pop cx
pop ax
ret
code ends
end start
;程序我已经调试过了,你可以改变程序开始处得bl,编译链接后用DEBUG命令里面的G参数
;g 0005 然后看寄存器bx的高8位为偶数之和 bx的低8位为奇数之和
;注意 我这个程序的缺点是 奇数之和不能超过8位,偶数之和也不能超过8位 也就是255,否则会产生进位导致结果不准确 但是你的问题是只要计算0~10的奇数和偶数和 所以足够用了!
我的QQ是544980123,希望能够加我一起学习!
⑸ 利用汇编语言程序上机操作方法,求1-20的所有偶数的和
CODESEGMENT
ASSUMECS:CODE
START:MOVAX,0
MOVCX,0AH
MOVBX,2
@1:
ADDAX,BX
INCBX
INCBX
LOOP@1
CALLDSPAX
MOVAH,4CH
INT21H
;===============================
DSPAXPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHF
XORCX,CX
MOVBX,10
@DSPAX1:
XORDX,DX
DIVBX
INCCX
ORDX,30H
PUSHDX
CMPAX,0
JNE@DSPAX1
MOVAH,2
@DISPAX2:
POPDX
INT21H
LOOP@DISPAX2
MOVDL,32
INT21H
POPF
POPDX
POPCX
POPBX
POPAX
RET
DSPAXENDP
;==================================
CODEENDS
ENDSTART
⑹ 用汇编实现1-10所有偶数的和
assume cs:code ;将CS段寄存器与code段关联
code segment ;code段
start:
mov bl,10 ;这里用AL来传送多少以内的数字
call sub1 ;调用子程序
mov ax,4c00h
int 21h
;================================================
;bl送入计算范围,比如0~10,在主程序里面只要把bl设置成10
;用bh返回偶数之和,用bl返回奇数之和
sub1:
push ax
push cx
push dx
dec bl
mov bh,0
mov cx,bx ;设置循环次数
mov dl,2 ;除数
mov ax,2 ;第一个数字,为什么要使第一个数字等于2而不是0呢?因为0/2会溢出
mov bx,1 ;初始籦bx bh=0 bl=1,0000 0001=1
s1:
push ax ;把ax暂存一下,分别在jishu和oushu里面还原,因为这里要进行除法,会改变AX
div dl ;数以2看有没有余数
cmp ah,0
je oushu
jishu:
pop ax
add bl,al
jmp short sub_ok
oushu:
pop ax
add bh,al
sub_ok:
inc ax
loop s1
pop dx
pop cx
pop ax
ret
code ends
end start
;程序我已经调试过了,你可以改变程序开始处得bl,编译链接后用DEBUG命令里面的G参数
;g 0005 然后看寄存器bx的高8位为偶数之和 bx的低8位为奇数之和
;注意 我这个程序的缺点是 奇数之和不能超过8位,偶数之和也不能超过8位 也就是255,否则会产生进位导致结果不准确 但是你的问题是只要计算0~10的奇数和偶数和 所以足够用了!
⑺ 使用汇编语言怎样编写100个偶数相加的程序
我做的是从2开始的100个偶数的和,结果是2774H,即十进制的10100
没有编写输出语句,要用debug看结果。
dseg segment
sum dw ?
dseg ends
cseg segment
assume cs:cseg,ds:dseg
begin: mov ax,dseg
mov ds,ax
xor ax,ax
mov cx,1
again: mov bx,cx
shl bl,1
add ax,bx
inc cx
cmp cx,100
jbe again
mov sum,ax
mov ah,4ch
int 21h
cseg ends
end begin
下面这个程序是计算100以内的偶数和,并以十六进制显示:
dseg segment
sum dw ?
tab db '0123456789ABCDEF'
dseg ends
cseg segment
assume cs:cseg,ds:dseg
begin: mov ax,dseg
mov ds,ax
xor ax,ax
mov cx,100
again: add ax,cx
sub cx,2
jnz again
mov sum,ax
;以上是求和,并存到sum单元
mov bx,offset tab
mov dh,4
mov cl,4
next: rol ax,cl
push ax
and ax,0fh
xlat
mov dl,al
mov ah,2
int 21h
pop ax
dec dh
jnz next
mov dl,'H'
mov ah,2
int 21h
;以上是以十六进制显示,思想是分离出四位,查表转换成ASCII码,并用2号功能显示,循环4次。最后输出后缀H
mov ah,4ch
int 21h
cseg ends
end begin
⑻ 求各位大神帮忙 用c语言编写计算给定的整型数组的偶数之和,奇数之和
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define N 10
int main(void){
int a[N];
int i, even=0, odd=0;
srand(time(0));
for(i=0; i<N; i++) {
a[i] = rand() % 100;
if(a[i] % 2 ==0 ) even += a[i];
else odd+= a[i];
}
printf("数组是: ");
for(i=0; i<N; i++) printf("%d ", a[i]);
printf("\n偶数之和是: %d\n", even);
printf("奇数之和是: %d\n", odd);
getchar();
}
⑼ 编写一个程序,对一个整数数组的偶数求和。
//---------------------------------------------------------------------------
#include <iostream>
class iteg{
int *data;
int size;
public:
iteg(int n,int b):size(n) /*构造函数,n是整数数组数字的个数,b是起始数字*/
{
data=new int[n];
for (int i = 0; i<n; i++) {
data[i]=b+i;
}
}
long int sum(void) const
{
long int s(0);
for (int i = 0; i < size; i+=2) {
s+=data[i];
}
return s;
}
~iteg(){delete[] data;}
};
int main(void)
{
iteg a(100,0);
std::cout<<a.sum()<<std::endl;
return 0;
}
//---------------------------------------------------------------------------