用汇编语言,编写程序输出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、可维护性:汇编语言可维护性低很多,代码复杂,针对性撰写程序,可以得到速度快、稳定性高的结果。高级语言的可维护性较高。但是速度较慢,稳定性不高。执行效率:汇编语言编写的源程序比...
莫耐欣维: 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