用汇编语言编译程序任意输入1到9之间的一位数字n 求从1开始连续n个奇数的和

如题所述

data segment
sum db ? ;存放结果
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov ah,1
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 ;将奇数加到al中
inc bl
inc bl ;两次加1,形成下一个奇数
loop next ;loop循环——cx减一,cx不为零的话转next,否则向下执行
mov sum,al ;保存结果到sum中
mov ax,4c00h
int 21h
code ends
end start
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-09
data segment
buf db 01h,03h,05h,07h,09h,0bh,0dh,0fh,11h
SUM db 00h
GE DB 00H
data ends
code segment
start:
mov ax,data
mov ds,ax
MOV AH,0
INT 16H ;键盘接收输入字符
SUB AL,30H
AND AH,00H
MOV BX,AX
CMP BX,1
JZ ADD9
CMP BX,2
JZ ADD9
CMP BX,3
JZ ADD9
CMP BX,4
JZ ADD9
CMP BX,5
JZ ADD9
CMP BX,6
JZ ADD9
CMP BX,7
JZ ADD9
CMP BX,8
JZ ADD9
CMP BX,9
JZ ADD9
ADD9:
MOV SI,BX
ADD SUM,buf[si]
dec si
cmp si,0
jnz ADD9
MOV AL,SUM
MOV BL,AL
AND AL,0FH
MOV GE,AL
AND BL,F0H
CMP BL,0AH
JB ADD1
ADD BL,07H
ADD1:
ADD BL,30H
MOV DL,BL
MOV AH,2
INT 21H
MOV BL,GE
CMP BL,0AH
JB ADD2
ADD ,07H
ADD2:
ADD BL,30H
MOV DL,BL
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS

参考资料:;

用汇编语言编译程序任意输入1到9之间的一位数字n 求从1开始连续n个奇 ...
mov ds,ax mov ah,1 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: a...

用汇编语言编译一个程序\\从键盘输入一个字符串将其每个字符的ASCII码...
sub al, 30h cmp al, 9 jbe next sub al, 7 next: ret asc2bin endp end main 上面的程序是:从键盘输入1~5之间的一个数,在屏幕上显示one…five。虽然不一样,但要求差不多,希望对你有帮助!

用汇编语言显示这样的数字组合:第一排是123456789第一列123456789然后从...
LEA DX, MSG1 MOV AH, 9 INT 21H MOV AH, 4CH INT 21H CODE ENDS END BEGIN 本程序执行后,显示如下:C:\\MASM>ww 0123456789 11 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 C:\\MASM> 本答案,回答的是最早的。但是,百度一直不舍得显示,今天才放开。

用汇编语言编一个九九乘法表。
;用MASM5.0编译通过,以下是运行结果 ;E:\\masm1>9X9 ;;1X1=1 ;1X2=2 2X2=4 ;1X3=3 2X3=6 3X3=9 ;1X4=4 2X4=8 3X4=12 4X4=16 ;1X5=5 2X5=10 3X5=15 4X5=20 5X5=25 ;1X6=6 2X6=12 3X6=18 4X6=24 5X6=30 6X6=36...

用汇编语言实现如下程序:进行自然数相加(1+2+3+……+N)。必须利用循环...
当你给定的@N 在92681以内时,它会输出自然数累加结果。(程序是用16位的寄存器实现,比32位的寄存器实现要复杂很多 !) CODE SEGMENT ASSUME CS:CODE @N DD 100000 START: PUSH CS POP DS PUSH CS POP ES MOV AX,0 MOV DX,0 ...

汇编语言程序设计题
mov cx,N+1 xor al,al cld rep stosb ;相加之和初始值清零 Output Prompt_Str1 ;提示输入被加数 lea di,Summand ;被加数存放地址 call Input_Hex ;键盘输入一个指定位数(N)的十六进制数字,保存在指定的存储单元 Output Prompt_Str2 ;提示输入加数 lea di,Addend ;加数存放地址 call Input_Hex mov si,9...

汇编语言 实现求平均数问题 急急急急急!!!
mov ah,1 ;从键盘接受一个字符 int 21h cmp al,20h ;若键入的是空格,已经键入的数字不足N位 jz @@ASC_Dec ;转去处理已经键入的数字 cmp al,KBBack jz @@KB_Back ;若是回空键,重新输入 cmp al,'0' jb @@KBBack ;若低于数字'0',重新输入 cmp al,'9' ja @@KBBack ;若高于数字'9',重新输...

汇编语言实现四则运算
mov ah,1 ;从键盘接受一个字符 int 21h cmp al,CR ;若键入的是回车,已经键入的数字不足N位 jz @@ASC_Dec ;转去处理已经键入的数字 cmp al,KBBack jz @@KB_Back ;若是回空键,重新输入 cmp al,'0' jb @@KBBack ;若低于数字'0',重新输入 cmp al,'9' ja @@KBBack ;若低于数字'9',重新输入...

【高分】帮忙用汇编语言做一个程序:学生成绩统计
; 程序操作说明:; 1、本程序定义:姓名最多个20个字符,学号最多10个字符,成绩最多3位数字; 2、输入学生信息时,各信息足位时,自动结束;不足位数时,按回车键结束; 3、输入姓名时,若直接回车,表示结束学生信息输入,进入信息处理; 本程序在MASMPlus 1.2集成环境下通过编译,经过调试,运行正确。Code Segment Assume...

汇编语言: 输入一个数字,显示出其月份英文单词的前三个字母
cmp al,1 jb Get_Number cmp al,12 ja Get_Number Seach_Mon: dec al mov bl,3 mul bl lea si,MONTAB add si,ax call EnterCRLF mov cx,3 Output_Mon: lodsb xchg dl,al mov ah,2 int 21h loop Output_Mon call EnterCRLF JMP Get_Number Exit_Proc: mov ah...

相似回答