用汇编语言,编写程序输出100-200之间所有的素数,每行输出5个数,在线等,急求!!!!!!!!!!

作者&投稿:脂花 (若有异议请与网页底部的电邮联系)
编写程序输出100-200之间所有的素数,每行输出5个数~

#include
#include
int main(){
int i,j;
char num[301];
//初始化
memset(num,1,301);
num[0]=0;
num[1]=0;
//筛选法
for(i=2;i<300;++i){
if(num[i]==0) continue;
for(j=i<<1;j<=300;j+=i)
num[j]=0;
}
//输出
int k=0;
for(i=200;i<=300;++i){
if(num[i]==1)
printf("%3d");
if(++k==5){
printf("
");
k=0;
}
}
getch();
}

;用汇编语言,编写程序输出100-200之间所有的素数,每行输出5个数,在线等,急求assume cs:code, ds:datadata segment PRIME db 100 dup ('$') FLAG db ? COL db ? CRLF db 0AH, 0DH, '$' DISPLAY db 4 dup ('$')data endscode segment start: mov ax, data mov ds, ax sub ax, ax mov di, offset PRIME mov al, 101 mov bl, 200 lp: cmp al, bl ja dis mov FLAG, 0 mov cl, 2 lp2: cmp cl, al jnb done ;当cl >= al时, 跳转 mov dl, al div cl cmp ah, 0 je done1 sub ah, ah mov al, dl inc cl jmp lp2 done1: mov FLAG, 1 done: cmp FLAG, 0 jne done2 mov byte ptr [di], dl inc di done2: mov al, dl add al, 2 jmp lp dis: mov di, offset PRIME - 1 mov si, offset DISPLAY mov COL, 0 mov cl, 10 done4: inc di sub ax, ax mov al, [di] mov bl, 2 cmp al, '$' je exit done5: div cl add ah, 30h mov byte ptr [si+bx], ah dec bl cmp al, 0 je done6 sub ah, ah jmp done5 done6: mov ah, 9 ;输出素数 mov dx, si int 21h mov ah, 2 ;输出空格 mov dl, ' ' int 21h inc COL cmp COL, 5 ;看这一行是否有5个素数 jne done7 ;不是的话,那么跳转到done7 mov ah, 9 ;否则输出空行 mov dx, offset CRLF int 21h mov COL, 0 ;下一行重新置0 done7: jmp done4 exit: mov ax, 4c00h int 21h code endsend start



PS:若有不明白的地方, 请追问

 

;用汇编语言,编写程序输出100-200之间所有的素数,每行输出5个数,在线等,急求!!!!!!!!!!

data segment

n1  db 20 dup(0)

N   DB 0

data ends


code segment

main proc far

assume cs:code,ds:data


start:

PUSH DS

XOR AX,AX

PUSH AX

MOV AX,DATA

MOV DS,AX

;

;MOV AX,20000

mov ax,100 ;起始数

AGAIN:

cmp ax,200 ;结束数

;cmp ax,300

ja exit

MOV BX,2

X1:

CMP BX,AX

JAe EXIT1 ;YES,DISP IT

PUSH AX

PUSH BX

MOV DX,0

DIV BX

CMP DX,0 ;YU=0

JE N11  ;NO

POP BX

POP AX

cmp bx,2 ;去掉偶数

ja add2

dec bx

add2:

inc bx

INC BX

JMP X1

N11:

POP BX

POP AX

JMP N22


EXIT1:  ;YES,DISP IT


mov si,offset n1

mov dx,0

CALL DIV10

push ax

push bx

mov dx,offset n1

mov ah,9

int 21h


INC N

MOV AL,N

CMP AL,5 ;每行显示5个数

JNE  DISP_K

MOV AL,0

MOV N,AL

JMP DISP_CR

DISP_K:

MOV AH,2

MOV DL,' '

INT 21H

JMP NEXT9

DISP_CR:

mov ah,2

mov dl,0dh

int 21h

mov dl,0ah

int 21h

NEXT9:

pop bx

pop ax

N22:

inc ax

jmp again

exit:


RET

;INT 20H

main endp

;=====================

;=====================

;将32位16进制数(DX:AX)转换为10进制数子程序

;入口: DX:AX存32位16进制数, SI为存放转换后10进制数的首地址

;出口: 在SI中存放转换后10进制数的ASCII码

DIV10 PROC NEAR

push ax

PUSH BX  ;保护现场

PUSH CX

PUSH DI

MOV CX,0 ;每位10进制数进栈计数器

MOV BX,10D ;除数10

RE_DIV:

PUSH AX  ;低16位进栈

MOV AX,DX ;先除高16位

MOV DX,0 ;高位置0

DIV BX  ;商在AX中,是下一轮除的高位;余数在DX中,它和已进栈的AX(低16位)组成新的32位数

MOV DI,AX ;将下一轮除的高位保存在DI

POP AX  ;取回先前进栈的低16位

DIV BX  ;除后,商AX是下一轮的低16位,即(DI:AX)组成新的32位被除数;

  ;余数DX是一位已转换的10进制数

ADD DX,30H ;将其转换成ASCII码

PUSH DX  ;将其进栈

INC CX  ;进栈计数器加1

MOV DX,DI ;将高位商返回DX

CMP AX,0 ;判断商是否为0, DX:AX均需为0,实际上就是(DI:AX)这个新组成的32位被除数是否为0

jz down1 ;商低位为0

JMP RE_DIV ;商低位不为0,继续除10取余

down1:

cmp dx,0

jz down  ;商低位(AX)为0,高位(DX)也为0

JMP RE_DIV ;否则继续除10取余

DOWN:  ;当DX和AX均为0时(商为0),转结束除

POP [SI] ;以CX的值(进栈计数器)依次出栈

INC SI  ;由于出栈的数仅低8位有效(高位为0),所以SI每次只增1,

  ;使新出栈的低8位有效值覆盖前一次出栈的高位0

LOOP DOWN

MOV AL,'$' ;在字符串尾部加结束标志

MOV [SI],AL

POP DI  ;恢复现场

POP CX

POP BX

pop ax

RET

DIV10 ENDP

;========================

;========================

code ends

end start



我也做出来了。


可见插图:



只要把设计要求,写入下面的数据段中,即可。

;================================

DSEG SEGMENT

    MSG1    DB  'SU_SHU: ', 13, 10, 24H


    N_1     DW  100

    N_2     DW  1000 ;300

    N_3     DB  10;8    ;5


    N_DIV   DW  ?

    N_DIS   DB  0


DSEG ENDS

;================================


程序,就会按照要求,输出素数。



我这有原创“筛法”找素数并输出的汇编程序的,私信30RMB吧,或当我没说




汇编语言-编写程序
已知以BUF为首址的字存储区中存放着n个有符号二进制数,试编写程序,将其中大于等于0的数依次送入以BUF1为首址的字存储区中,小于0的数依次送入以BUF2为首址的字存储区中。wowo3610 2018-11-20 | 浏览31 次 汇编语言编程语言编程 |举报 答题抽奖 首次认真答题后 即可获得3次抽奖机会,100%中奖。 更多问题...

汇编语言程序设计的一般步骤是什么?
这是编制汇编语言程序最为重要的一步。算法里规定的功能,是要通过一条条指令描述出来的。为了提高编程能力,对于初学者,一是要多阅读现有的程序,以学习别人的编程经验;而更为重要的是,必须多亲自动手编写,不要怕失败,只有通过无数次失败,才能从中积累自己的编程经验。(5) 上机调试运行程序。通过...

汇编能写程序吗?
可以,汇编是低级语言,神道,神人才学习的,疯狂的程序员作者绝影大哥就是从汇编学起的。 C是中级语言,简约而不简单,学习的话花个四五年时间的要。 其他很多高级语言新生可以学习,比较容易的都, 不过我还是喜欢C语言,一直在坚持着学习。天天去CSDN看看,有收获的。

汇编语言是一种什么程序设计语言?
比起机器语言,汇编语言具有更高的机器相关性,更加便于记忆和书写,但又同时保留了机器语言高速度和高效率的特点。汇编语言仍是面向机器的语言,很难从其代码上理解程序设计意图,设计出来的程序不易被移植,故不像其他大多数的高级计算机语言一样被广泛应用。所以在高级语言高度发展的今天,它通常被用在...

编写一个完整的汇编语言程序,要求在屏幕上显示出字符串“Hello,Assembly...
datasegment msgdb'Hello,Assemblylanguage','$'dataends codesegment assumeds:data,cs:code mainprocfar movax,data movds,ax leadx,msg movah,9 int21h movax,4c00h int21h mainendp codeends endmain

汇编语言是一种什么程序设计语言
同时,因为资源的稀缺性,计算机运行的效率也成为那个时代工程师追求的目标。为了更高效地使用计算机,人们设计了高级编程语言,以满足人们对高效简洁编程语言的追求。在编程语言被机器语言和汇编语言更新之后,人们发现了限制程序普及的关键因素——程序的可移植性。有必要设计一个可以独立于计算机硬件在不同...

汇编程序是指由汇编语言编写的程序,对么?
汇编程序是指用汇编语言编写的源程序,--不对。汇编程序,不是指源程序。汇编程序,是用来对源程序,进行编译的工具软件。不同计算机的汇编程序通常是相同的--不对。不同类型计算机的汇编程序,通常是不相同的。

汇编语言怎么用,写的界面在哪,语法呢.我初学
可以直接输入命令了,比如a,编写汇编程序(只限于简单的);t,查看各寄存器的存储情况;u,查看汇编程序,其他命令可以自己学。如果要写些复杂的,可以在Dos界面中写"edit",在跳出来的蓝色屏幕编辑器中写程序,写完了保存(格式为.a *** ),然后用LINK和MASM进行连接编译(这部分你要查一下用法,只要...

编写完整汇编语言程序,在屏幕中间输出红底黑字的字符串:"Hello,I'm...
;代码如下 org 100h ;有的汇编器不用这一行, 不过nasm需要 ;output a string in the middle and colored black ,and bg-colored red ;清屏 mov AH, 06 ; function number mov AL, 00 ; page number mov BH, 07 ; normal attribute mov CH, 00 ; row value of start point mov CL, ...

汇编和高级语言的区别?
2、程序的执行效率:汇编语言程序的占用空间小,执行速度快,执行效率高,高级语言占用的空间大,执行效率较低。3、可维护性:汇编语言可维护性低很多,代码复杂,针对性撰写程序,可以得到速度快、稳定性高的结果。高级语言的可维护性较高。但是速度较慢,稳定性不高。执行效率:汇编语言编写的源程序比...

宁波市19536927200: 用汇编语言编写:从键盘输入一个十进制数(100以内),将其转变为二进制数并在屏幕输出 -
莫耐欣维: DSEG SEGMENT INPUT DB 'INPUT A NUMBER:','$' OUTPUT DB 32,'RESULT IS:','$' NUMBER DB 3 DB ? db 3 DUP(0) DSEG ENDS CSEG SEGMENT assume cs:CSEG, ds:DSEG MAIN PROC FAR mov ax, dseg mov ds, ax lea dx,INPUT mov ...

宁波市19536927200: 谁能教我用汇编语言编一个从1加到100的程序,,并用十进制在屏幕输出 -
莫耐欣维: 这还不简单,程序如下:data segment abc dw data ends code segment assume cs:code,ds:data main proc far mov ax,data mov ds,ax mov ax,1 ;给ax赋初值 mov cx,99 ;总共循环99次 lop: inc ax ;ax增加1 add abc,ax ;相加,最终的结果就在变量abc里 loop lop ;循环 mov ah,4chint 21h main endp code ends end main 不过本程序没有显示功能

宁波市19536927200: 使用汇编语言:使用循环在屏幕上输出100个字符A 写程序 明天就要交作业了... 求大神解!!!! -
莫耐欣维: ASSUME CS:CODE, DS:CODE;--------------------------------- CODE SEGMENT ;代码段 START: MOV AX, CODE MOV DS, AX;-------------------------------- MOV AH, 2 MOV DL, 'A' MOV CX, 100 LOP: INT 21H LOOP LOP ;循环100次 MOV AH, 4CH ;结束程序 INT 21H CODE ENDS END START;--------------------------------- 可以了.

宁波市19536927200: 用汇编语言球100以内的素数 -
莫耐欣维: DSEG SEGMENT count dw 0;存放素数的个数 sum dw 0;存放素数的和 sushu db 100 dup(?);存放素数 msgsushu db 'all of sushu are:','$';显示素数的提示信息 msgcount db 0dh,0ah,'count of sushu is:',0dh,0ah,'$';显示素数个数的提...

宁波市19536927200: 请问用8086汇编语言编写程序计算1+2+……+100 怎么写??求代码,谢谢 -
莫耐欣维: DSEG SEGMENT RESULT DW 0 DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START: MOV AX,DSEG MOV DS,AX ; XOR AX,AXMOV CX,100 C1: ADD AX,CX LOOP C1 ; MOV RESULT,AX ; MOV AX,4C00H INT 21H CSEG ENDSEND START

宁波市19536927200: 写一个汇编语言程序,实现1到100的自然数之和,并将结果显示输出. -
莫耐欣维: DATA SEMGNET A DW ? STACK SEGMENT STACK DB 150 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DATA ,CS:CODE, SS:STACK START: MOV AX,DATA MOV DS,AX MOV BX,0 MOV CX,100 MOV AX,1 L1: ADD BX,AX INC AX DEC CX JNZ L1 MOV A,BX MOV AH,4CH INT 21H

宁波市19536927200: 用汇编语言编写一个程序 -
莫耐欣维: 1计算U =(X +(Y * Z-100))/ W 其中:X,Y,Z,W是16的符号数. 程序如下:数据段X DW 10; 16 可变功能?DW 20 于DW 30W DW 40> U DW?? 数据结束 代码段 假设CS:CODE,DS:DATA 开始: MOV AX,DATAMOV DS,AXMOV AX,YIMUL ...

宁波市19536927200: 汇编语言 怎样将数字输出,为什么? 讲讲原理 -
莫耐欣维: 如果要用汇编显示东西,一般是调用中断来完成的(一般是int 21h),这里的int 21h其实是一个子程序,他是系统(dos)本身帮你写好了的,不用你管,你只要按要求把东西提供给他他就会完成它的功能,在汇编书上一般都有int 21h的功能说...

宁波市19536927200: 使用汇编语言怎样编写100个偶数相加的程序 -
莫耐欣维: 我做的是从2开始的100个偶数的和,结果是2774H,即十进制的10100 没有编写输出语句,要用debug看结果. dseg segment sum dw ? dseg ends cseg segmentassume cs:cseg,ds:dseg begin: mov ax,dsegmov ds,axxor ax,axmov cx,1 ...

宁波市19536927200: 编写一个汇编子程序,该子程序的功能是在屏幕上连续输出100个“$”符号. -
莫耐欣维: CODE SEGMENT ASSUME CS:CODE START: PUSH CS POP DS PUSH CS POP ES CALL DSP100$ MOV AH,4CH INT 21H DSP100$ PROC NEAR PUSH AX PUSH CX PUSH DX PUSHF MOV CX,100 MOV DL,'$' MOV AH,2 @DSP100: INT 21H LOOP @DSP100 POPF POP DX POP CX POP AX RET DSP100$ ENDP CODE ENDS END START

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网