#99 Article 984 Posted at 1995/12/06 01:17:18 by MSP-Iris (MAP4370) [SAHOU]
Subject: Re:*7 プログラミングお作法の話 /948 ... /941 /940
こんなのも作ってみました。
Cとアセンブラの融合です。
TASM V2.0+MS-C V5.1(なんつー組み合わせじゃ(笑)。
--------------------------------------------
cr equ 0dh
lf equ 0ah
true = ( 0 eq 0 )
false= ( 0 eq 1 )
.model small,c
.186
locals __
PRTMSG macro X
mov ah,09
mov dx,offset &X
int 21h
endm
.code
public PNYAN
PNYAN proc near uses DS,ARG1:word
mov ax,cs
mov ds,ax
mov cx,ARG1
__lp: PRTMSG cs:nyanmsg
loop $-2 ;instead of 'loop __lp'
PRTMSG cs:nlmsg
ret
nyanmsg db 'にゃん$'
nlmsg db cr,lf,'$'
endp
end
--------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
extern void PNYAN (int);
char *strgets (d,n,s) char *d,*s; int n; { /*fgets-like strings copy*/
strncpy(d,s,n-1);
d[n-1]='\0';
return(d);
}
main (argc,argv) int argc; char *argv[]; {
static char istg[4]; static int iprm;
int i;
if(argc<2)
fgets(istg,4,stdin);
else
strgets(istg,4,argv[1]);
iprm=atoi(istg);
if(iprm<=0|iprm>999)
abort();
for(i=1;i<iprm;i++)
{
switch(i)
{
case 3: /*fall thru*/
case 5: PNYAN(i);
break;
default:printf("%i\n",i);
break;
}
}
PNYAN(iprm);
}
--------------------------------------------
MAP4370 MSP-Iris