汇编语言打印输出三角形

作者&投稿:禤香 (若有异议请与网页底部的电邮联系)
C语言编程求助!“使用循环语句打印出星号三角形”(如下图)~

 这个是程序代码:
  main()
{
int m,n;
for(n=1;n<=3;n++)
{
for(m=1; m<=2*n-1;m++)
printf("*");
printf("
");
}}
  C语言是一种计算机程序设计语言,属高级语言范畴。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序,代码清晰精简,十分灵活。

CODE SEGMENT ASSUME CS:CODE ORG 100H START: JMP BEGIN ORG 200H Y1 DB 100H DUP(0) ORG 300H Y2 DB 100H DUP(0) CN DW 10 BEGIN: PUSH CS POP DS PUSH CS POP ES MOV BYTE PTR DS:[200H],1 MOV BYTE PTR DS:[201H],1 MOV BX,2 @0: MOV DI,0 @1: CMP DI,BX JG @5 CMP DI,0 JNE @2 MOV BYTE PTR [DI+300H],1 JMP @4 @2: CMP DI,BX JNE @3 MOV BYTE PTR [DI+300H],1 JMP @4 @3: MOV AL,[DI+1FFH] ADD AL,[DI+200H] MOV BYTE PTR [DI+300H],AL @4: INC DI JMP @1 @5: CALL DISPALL CALL TRANS INC BX CMP BX,CN JLE @0 MOV AH,4CH INT 21H DISPALL PROC NEAR PUSHF PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI MOV SI,0 @D0: MOV AL,BYTE PTR[SI+300H] CMP AL,0 JE @D5 MOV AH,0 MOV BL,100 DIV BL PUSH AX CMP AL,0 JE @D1 MOV DL,AL ADD DL,30H MOV AH,2 INT 21H JMP @D2 @D1: CALL DISPBLANK @D2: POP AX MOV AL,AH MOV AH,0 MOV BL,10 DIV BL PUSH AX CMP AL,0 JE @D3 MOV DL,AL ADD DL,30H MOV AH,2 INT 21H JMP @D4 @D3: CALL DISPBLANK @D4: POP AX MOV DL,AH ADD DL,30H MOV AH,2 INT 21H MOV DL,' ' INT 21H INC SI JMP @D0 @D5: MOV AH,2 MOV DL,13 INT 21H MOV DL,10 INT 21H POP DI POP SI POP DX POP CX POP BX POP AX POPF RET DISPALL ENDP TRANS PROC NEAR PUSHF PUSH AX PUSH CX PUSH SI PUSH DI MOV CX,100H MOV SI,300H MOV DI,200H REP MOVSB POP DI POP SI POP CX POP AX POPF RET TRANS ENDP DISPBLANK PROC NEAR PUSHF PUSH AX PUSH DX MOV AH,2 MOV DL,' ' INT 21H POP DX POP AX POPF RET DISPBLANK ENDP CODE ENDS END START

; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
Start: mov cx,8 ;行数
mov dx,8 ;第一行第一个字符坐标
@@Line: xor bh,bh ;页号
mov ah,2 ;置光标位置
int 10h
push dx
mov dl,'*'
mov ah,2 ;显示一个字符
push cx
mov cl,dh
shl cx,1
inc cx
@@Disp_Chr: int 21h
loop @@Disp_Chr
pop cx
pop dx
inc dh ;行号增1
dec dl ;列号减1
loop @@Line
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束

补充回答:诚如1楼所问,在字符/图形显示方式下画?
若在字符显示方式下画空心三角形,你老师能画出来,我就能画出来;在图形显示方式下,要求分辨率一定要高,否则,画出来的也不像,即不成比例。

code segment
assume cs:code,ds:code
org 100h
main proc near
mov ah,0
mov al,8 ;第几行空格=8-第几行
mov bh,0
mov bl,1 ;行
mov cx,8 ;总列数

rep4:
push ax
push bx
push cx

sub al,bl ;判断是否需产生空格,因第8行前面没空格,所以当bl=8时
jna left ;不产生空格,接着开始处理左边部分

mov cx,ax ;准备产生空格
mov ah,2
mov dl,20h ;空格的ASCII码
rep1:
int 21h
loop rep1 ;连续产生空格

left:mov cx,bx ;准备产生左边部分,以1为界,1属于左边部分
mov ah,2
mov dl,30h ;30h为0的ASCII码,31h为1,38h为8
add dl,bl ;加上bl后,即分别是第行的最大数
rep2:
int 21h
dec dl ;递减,即左边依次减小
loop rep2 ;递减产生左边

sub bl,1 ;判断是否是第1行,因第1行可以说没有右边部分
jna next ;是第1行,则跳到换行,接着处理第2行

mov cx,bx ;准备产生右边部分
add dl,2 ;因产生左边后,dl的值变为30h
rep3:
int 21h
inc dl ;递增,即右边部分依次增大
loop rep3 ;递增产生右边

next:mov dl,0dh ;回车
int 21h
mov dl,0ah ;换行
int 21h

pop cx
pop bx
pop ax
inc bl ;下一列
loop rep4

mov ah,4ch ;结束程序
int 21h

main endp
code ends
end main

用字符画还是用图形模式画?


用程序实现:输入一个字符,打印输出一个空心等腰三角形?
已测试无误 望采纳,感谢 include <stdio.h> int main(){ char c;int i,j,n=5;puts("请输入任意一个字符:");scanf("%c",&c);for(i=0;i<n;i++){ printf("\\n");for(j=1;j<=n+i;j++){ if(j==n-i||j==n+i||i==n-1)printf("%c",c);else printf(" ");} ...

用C语言编写:打印由“*”号组成的直角三角形
include "stdio.h"include "conio.h"main(){int i,j;for(i=0;i<6;i++){for(j=0;j

汇编语言打印输出三角形
@@Line Exit_Proc: mov ah,4ch ;结束程序 int 21h Code ENDS END Start ;编译到此结束 补充回答:诚如1楼所问,在字符\/图形显示方式下画?若在字符显示方式下画空心三角形,你老师能画出来,我就能画出来;在图形显示方式下,要求分辨率一定要高,否则,画出来的也不像,即不成比例。

C语言打印输出上三角形?
你这个图形样子的上三角形可以用二维数组存储后打印,每一行的元素值就是这个元素所在的行乘以这个元素所在的列,然后从你想输出的行开始,每一行的元素都减少一个,不打印的元素用空格存,大体思路是用三个循环,一个是最外面的循环决定现在存储第几行的元素,这个大循环里面有两个循环,第一个循环是...

C语言中编程打印输入杨辉三角形
include <stdio.h>#include <conio.h>#define ARR_LEN 255 \/* 数组长度 *\/int main (void) {int lines, yht[ARR_LEN][ARR_LEN];int i, j;lines = 6; \/* 杨辉三角形行数 *\/\/* 每行最左侧与最右侧值为1 *\/for (i=0; i<lines; i++) {yht[i][0] = 1;yht[i][i] = 1...

用c++或c打印数字三角形,从1开始输出,第i行输出i个数,每个数字按4个位 ...
include <stdio.h>main(){int i,j,n,t=1;printf("请输入n:");scanf("%d",&n);for(i=1;i<=n;i++){for(j=0;j

C语言编程输出杨辉三角形(要求输出10行)?
include<stdio.h> int main(){ int n,i,j,a[100];n=10;printf(" 1");printf("\\n");a[1]=a[2]=1;printf("%3d%3d\\n",a[1],a[2]);for(i=3;i<=n;i++){ a[1]=a[i]=1;for(j=i-1;j>1;j--)a[j]=a[j]+a[j-1];for(j=1;j<=i;j++)printf("%3d",...

C语言:输入一串字符串,输出三角形样式图案,每行包含行号和子串_百度知 ...
include <stdio.h>int main(){ int i; char c; char str[100]; scanf("%s",str); for(i=0;str[i]!='\\0';i++) { c=str[i+1]; str[i+1]='\\0'; printf("%d: %s\\n",i+1,str); str[i+1]=c; }} ...

c语言编写程序输出用字母构成的直角三角形
include<stdio.h> int main(){ int a,b;for( a = 1; a != 10; a++){ for( b = 1; b <= a; b++){ printf("%d*%d=%d\\t",b,a,a*b);} printf("\\n");} return 0;}

c语言输出三角形
输出步骤如下:\/\/输入正整数n<=20输出一个n层的倒三角形.例如n=5则输出如下所示 \/\/ 解题思路 每层是2n-1个* 5-i个空格 双层for循环 \/ \/ include<stdio.h> int main(){ int n;scanf("%d",&n);for(int i=n;i>0;i--){ for(int j=1;j<=2*i-1;j++){ printf("#");} ...

五原县17258509244: 在汇编语言中如何实现如下操作:先清屏,并在信息窗中输出一个形状,如三角形、正方形 -
屈菲盐酸: ——X86汇编;设置显示模式兼有清屏功能;对于超级VGA显示卡,我们可用AX=4F02H和下列BX的值来设置其显示模式. ;本程序不支持液晶显示器;;BX 显示模式 属性;100H 640*400*256色;101H 640*480*256色;102H 800*600*16...

五原县17258509244: 怎么用c语言打印三角形? -
屈菲盐酸: 首先你要知道怎样打印三角形,一般都是,通过两个for 循环, for(i=0;i<n;i++) { for(j=0;j<i;j++) { printf(“*"); } printf(“\n"); } 输出三角形,之后你更改i,jn的数值,做相应的变化

五原县17258509244: 请高手告诉我怎么用汇编编写输出三角形星型图
屈菲盐酸: ;画三角形星型图,实际运行正确 code segment assume cs:code,ds:code org 100h start: push cs pop ds mov ax,3 int 10h;置文本模式 mov ax,0b800h mov es,ax;找显存段址 mov ax,072Ah;'*' xor dx,dx mov si,5 Q0:mov di,dx;找屏幕位置 mov cx,6 sub cx,si;计算'*'个数 rep stosw;写显存 add dx,80*2 dec si jnz Q0 mov ah,1;暂停 int 21h mov ah,4ch;结束 int 21h code ends end start

五原县17258509244: 用汇编语言编程序:输出n(10以内)行直角三角形形式的星号图案. -
屈菲盐酸: #includevoid fun(int n){ int i,j; for(i=1;i<=n;i++){ for(j=1;j<=i;j++){ cout<<'*'; } cout<

五原县17258509244: 汇编程序(画一个三角形) -
屈菲盐酸: 先在记事本里输入代码后,再用汇编编译器编译. 具体过程如下: 1、编辑:用编辑软件(EDIT.EXE或记事本)形成源程序(.ASM),如:LX.ASM; 2、汇编:用汇编程序(MASM.EXE)对源程序进行汇编,形成目标文件(.OBJ),格式如...

五原县17258509244: c语言输出三角形 -
屈菲盐酸: 输出步骤如下: 1. //输入正整数n<=20输出一个n层的倒三角形.例如n=5则输出如下所示2. // 解题思路 每层是2n-1个* 5-i个空格 双层for循环3. /*4. #########5. #######6. #####7. ###8. #9. */10. #include<stdio.h>11. int main(){12. int ...

五原县17258509244: 用while语句怎么实现三角形打印 -
屈菲盐酸: #include<stdio.h> #define N 5 void main() { int i,j; i=0; while ( i<N ) { j=0; while ( j<i+1 ) { printf("*"); j++; } printf("\n"); i++; } } 需要循环嵌套,用for语句实现更加容易理解

五原县17258509244: 编写程序打印杨辉三角型. -
屈菲盐酸: 代码:#include<stdio.h>#define N 10 void setdata(int(*s)[N],int n){ int i,j; for(i=0;i<n;i++)//第一列和对角线上的元素都置1 { s<i><i>=1;s<i>[0]=1; } for(i=2;i<n;i++){//给杨辉三角形其他元素置数 for(j=1;j<i;j++){ s<i>[j]=s[i-1][j-1]+s[i-1][j]; } } } void ...

五原县17258509244: 怎样输出这个三角形 -
屈菲盐酸: #include <stdio.h> int main() { int n=20; int i,temp; for(i=0;i<n;i++)//输出你的20层三角 { temp=n-i-1; while(temp--) printf(" "); temp=2*i+1; while(temp--) printf("*"); printf("\n"); } //输出你下面的一个*,你图形中最下面有个* printf("\n"); printf(" *"); printf("\n"); return 0; } 程序如上,有问题可以hi我.

五原县17258509244: 用c语言打印三角形 -
屈菲盐酸: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19#include <stdio.h> intmain() {inti,j;for(i = 1; i <= 7; i +=2){for(j = 0; j < i; j ++)printf("*");printf("\n");}for(i = 5; i >= 1; i -=2){for(j = 0; j < i; j ++)printf("*");printf("\n");} return0; }

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