用汇编语言编制一个计算从2开始的N个偶数之和,将结果显示出来

供稿:hz-xin.com     日期:2025-01-13
汇编语言课程设计求解

.model small.data stuinfo db 'Xiaoming Li, Num. 00001', 0dh, 0ah,'$' msg0 db 'Input N(2<N<50):$' msg1 db 0dh, 0ah, 'Input is invalid, reinput:$' crlf db 0dh, 0ah, '$' N db 0.code.startup lea dx, stuinfo mov ah,9 int 21h lea dx, msg0 int 21h mov bl, 10r0: mov bh, 0r1: ;read N mov ah,1 int 21h cmp al,0dh jz r2 cmp al,'0' jb e0 cmp al,'9' ja e0 and al, 0Fh xchg al, N mul bl add N, al inc bh cmp bh, 2 jz r2 jmp r1r2: mov al, N cmp al, 3 jb e0 cmp al, 50 jae e0 ;print mov ah,9 lea dx, crlf int 21h mov bx, 0 mov ax, 2c0: add bx, ax call print add ax, 2 cmp al, N ja c1 call printplus jmp c0c1: mov ax, 0e3dh ;'=' : 3dh int 10h mov ax, bx call print jmp exite0: mov ah,9 lea dx, msg1 int 21h mov N, 0 jmp r0exit: .exit 0printplus proc near push ax mov ax, 0e2bh ;'+' : 2bh int 10h pop ax retprintplus endpprint proc near push ax push bx mov bx,10 xor cx, cxq0: xor dx, dx div bx xor dx, 0e30h push dx inc cx cmp ax, 0 jnz q0q1: pop ax int 10h loop q1 pop bx pop ax retprint endpEND

自己写的:

ASSUME CS:CODE, DS:DATA

DATA SEGMENT

OUT_TABLE DW PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9

;PIFANG_TABLE
PF0 DB 13, 10, '0, 0H $'
PF1 DB 13, 10, '1, 1H $'
PF2 DB 13, 10, '4, 4H $'
PF3 DB 13, 10, '9, 9H $'
PF4 DB 13, 10, '16, 10H $'
PF5 DB 13, 10, '25, 19H $'
PF6 DB 13, 10, '36, 24H $'
PF7 DB 13, 10, '49, 31H $'
PF8 DB 13, 10, '64, 40H $'
PF9 DB 13, 10, '81, 51H $'

DATA ENDS

CODE SEGMENT

START:
MOV AX, DATA
MOV DS, AX

MOV AH, 1
INT 21H ;输入一字符
CMP AL, '0'
JB EXIT
CMP AL, '9'
JA EXIT

AND AL, 0FH ;AL=0~9
MOV AH, 0
MOV BX, AX ;BX=0~9
ADD BX, BX
MOV AX, [BX] ;查表得出结果
LEA DX, OUT_TABLE
ADD DX, AX
MOV AH, 9 ;显示
INT 21H
EXIT:
MOV AX, 4C00H
INT 21H
CODE ENDS
END START

        CODE  SEGMENT
              ASSUME    CS:CODE
      START:  PUSH      CS
              POP       DS
              PUSH      CS
              POP       ES
              MOV       BP,0
         @0:
              MOV       AH,1
              INT       21H
              CMP       AL,13
              JE        @1
              SHL       BP,1
              MOV       DI,BP
              SHL       BP,1
              SHL       BP,1
              ADD       BP,DI
              AND       AL,0FH
              XOR       AH,AH
              ADD       BP,AX
              JMP       @0
         @1:
              MOV       CX,BP
              XOR       AX,AX
         @2:
              ADD       AX,CX
              LOOP      @2
              SHL       AX,1
              CALL      LFCR
              CALL      DSPAX
              MOV       AH,4CH
              INT       21H

;=======================================
       DSPAX  PROC      NEAR
              PUSH      AX
              PUSH      BX
              PUSH      CX
              PUSH      DX
              PUSHF
              XOR       CX,CX
              MOV       BX,10
    @DSPAX1:
              XOR       DX,DX
              DIV       BX
              INC       CX
              OR        DX,30H
              PUSH      DX
              CMP       AX,0
              JNE       @DSPAX1
              MOV       AH,2
   @DISPAX2:
              POP       DX
              INT       21H
              LOOP      @DISPAX2
              POPF
              POP       DX
              POP       CX
              POP       BX
              POP       AX
              RET
       DSPAX  ENDP
;==================================
        LFCR  PROC      NEAR
              PUSH      AX
              PUSH      DX
              MOV       AH,2
              MOV       DL,13
              INT       21H
              MOV       DL,10
              INT       21H
              POP       DX
              POP       AX
              RET
        LFCR  ENDP
;================================
        CODE  ENDS
              END       START


用汇编语言编制一个计算从2开始的N个偶数之和,将结果显示出来
1 ADD BP,DI AND AL,0FH XOR AH,AH ADD BP,AX JMP @0 @1: MOV CX,BP XOR AX,AX @2: ADD AX,CX LOOP @2

在ARM中用汇编语言编写程序,计算2+4+6+8+...+2n
.code start:mov ax, @data mov ds, ax mov cx, 50 ;循环50次 xor ax, ax label:mov bx, cx shl bx, 1 ;相当于将当前循环计数乘2,用来做加法 add ax, bx loop label ;循环完成后,结果放在AX中 mov ax, 4c00h int 21h

汇编语言编写完整的程序求N!,可以自由输入n的值,输出为十进制数_百度知...
lea di,Number1 ;变量Number1的地址 call Input_Digit ;从键盘接受一个N位数字 call Output_CTLF ;输出一个回车、换行 Output prompt_Two ;提示输入第一个数 lea di,Number2 ;变量Number1的地址 call Input_Digit ;从键盘接受一个N位数字 call Output_CTLF ;输出一个回车、换行 call Output_CTLF ;输出一...

...编写程序,用函数完成:计算从1开始到n的自然数的和???
1、新建一个求1到100自然数之和项目。2、添加一个cpp文件。3、包含需要用到的头文件。4、输入main函数。5、定义两个变量,分别是:a和sum。6、使用while语句计算1到100之间所有自然数之和。7、运行程序,打印出结果。注意事项:C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性...

用汇编语言怎么实现a的b次方
看你学的什么汇编语言了。如果是DEBUG下进行调试,直接使用R命令就可以给寄存器赋值。如果是在DOS下编写汇编语言,你应该使用INT 21H获取按键,然后识别数字键,并转换为整数。如果是在WINDOWS下编写汇编语言程序,你应该建立一个窗口、一个文本框、一个按钮,按钮事件完成把文本框内容转换为整数。

用汇编语言编译程序任意输入1到9之间的一位数字n 求从1开始连续n个奇 ...
int 21h ;1号功能调用,输入一个1-9的数字字符 and al,0fh ;将数字字符转换成数值 mov cl,al xor ch,ch ;将输入的数值放到cl,并将ch清零,即将输入的数值存放到cx中 mov bl,1 ;bl置为1,bl存放奇数 xor al,al ;al作为累加寄存器,清零 next: add al,bl ;将奇数加...

用汇编语言编写从1加到N,求N是最终和超过1000的第一个数
;从1加到N,求N是最终和超过1000的第一个数 DATAS SEGMENT ;此处输入数据段代码 N DW 0 DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START:MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 XOR AX,AX L1:INC N ADD AX,N CMP AX,1000 JNA L1 ;跳出循环后得到要求的N值:45 ;1+2...

我们老师让我编一个程序 键盘输入一个n 然后用循环计算 从1加到n的...
main proc far start:push ds sub ax,ax push ax mov ah,1 ;1号命令输入字符 int 21h sub al,'0' ;输入的字符-30h得到相应数字 mov cl,al ;将此数放到cl中为循环做准备 mov al,1 mov dl,0 again:add dl,al inc al loop again ;此循环进行累加,al每次+1,最终的数...

求用汇编语言编写 1+2+…+n大于600的时候最大的n值~~急呀,求大神...
首先题目错误,你题目要求的n值不存在。要么是:...+n大于600的时候最小的n值 要么是:...+n小于600的时候最大的n值 按第一个要么,80x86代码如下:MOV AX,0 MOV BX,0 NEXT:INC BX ADD AX,BX CMP AX,600 JB NEXT ;n值在BX中 ...

汇编递归X的n次方,高手帮忙
;用递归求M的N次幂 ;输入:;第一个PUSH=底数 ;第二个PUSH=指数 ;输出:;AX=结果 ;--- power proc push bp mov bp,sp add bp,4 mov ax,[bp]cmp ax,1 jz Return dec ax push [bp+2]push ax call power mul word ptr [bp+2]pop bp ret 4 Return:mov ax,[bp+2]pop bp ret 4...