Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

project

9 views
Skip to first unread message

nicole

unread,
Jan 15, 2011, 5:38:35 AM1/15/11
to
hi all . i want an intresting project topic in assembly but i dont
have any topic . maby a bout protected mode or
hack (i love it)
and you know i'm new in assembly ... it shoud be easy :(
is any one have any idea a bout topic [ an reference for it ] ?

Herbert Kleebauer

unread,
Jan 15, 2011, 3:38:49 PM1/15/11
to
nicole wrote:
>
> hi all . i want an intresting project topic in assembly but i dont

One posting every 5 years from somebody who wants to learn assembly
programming and no answer?


> have any topic . maby a bout protected mode or
> hack (i love it)
> and you know i'm new in assembly ... it shoud be easy :(
> is any one have any idea a bout topic [ an reference for it ] ?

Seems you are in the lucky position, to be able to run 16 bit
code. Hope you also can use full screen mode (XP and older).

In this case I would suggest to do some graphics programming.
You will never find an easier way to do it than in 16 bit DOS.
Here a few examples from older postings in alt.lang.asm


------
Cross posted an follow-up set to alt.lang.asm

::::::::::::::::::::::::::::::::: demo 1 :::::::::::::::::::::::::::::::
@echo off
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>2006.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY
Wv;ovBX2Gv0ExGIuht6>>2006.com
echo
?RwAgOLRN_?GE@`yU?wP_N{b?xFG?p=pr~p{m]jEx{kAkyvLuqoswEt`L?>>2006.com
echo
BooBOK@Hcz@tHMMUEFSyFGOGKsAggrR?wA?~zANOLBK1_a?DGB?MOw?C}A>>2006.com
echo
x~pkr{}vE]dA=F1o?~yMx~~}?F=MlgHMN?c@@An}DGwBh?cP@?WF@~xA@M>>2006.com
echo
Hm?_mJqnNwG}@N_oLiHc?WLkx\ISx\hJt=h~p=0[5Merry9Christmas..>>2006.com
echo 3and1A5Happy3New4Year420060]>>2006.com
2006.com
del 2006.com

::::::::::::::::::::::::::::::::: demo 2 :::::::::::::::::::::::::::::::
echo off
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>love.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY
Wv;ovBX2Gv0ExGIuht6>>love.com
echo
?RwAgOLRF_?GZpep?xDH~pyrpwHM?zQZrv@{?wlC_i@mA~?CHYvnnNBbO@>>love.com
echo
Zr@gvNKsBFQpep?wex?Hf?rve=?g@{CAgBai_w@sHJsULR?w=IUL?K?BwA>>love.com
echo BOLr0x>>love.com
love.com
del love.com

::::::::::::::::::::::::::::::::: demo 3 :::::::::::::::::::::::::::::::
@echo off
echo
Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>hla2asm.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY
Wv;ovBX2Gv0ExGIuht6>>hla2asm.com
echo
DWKMzO???AE?B@qp?p{r?rLRwvtlL?Ro?wOG]yRGFxFGBz?Gq=?WOLBKR?>>hla2asm.com
echo
wAO1yA?CxA?BzABx=EwOLbL?@oewrGrL?K?OH]cevRuvBKbBa`HGh_v?Gv>>hla2asm.com
echo
BceC_uvRfbBG?oGoBGyM}AmfxBe`k?K_{am~Bf~I@_xAr?p{G}jYf~Bg@z>>hla2asm.com
echo
BGK=?GKI?G?pVppirjKiV?@Ki?@o]J1irZWFBMG}@]IqBC_tLtAmBMjZv~>>hla2asm.com
echo
f}Ujf~Bw?xDWGkAGAs?FiAoa}uan~B=`gCfp}?H_~BQagEfQzAc`M?FOxl>>hla2asm.com
echo
ehe?WOr_P1DEBKaF?stJtV=BknH?~__@g~c?D{gPD{PFH}F@grjF@Mf}Gg>>hla2asm.com
echo
bNB_BVmC}Br`yDfbx?W_r?WoF@cyI?gRLst\wLxlL?Aoj}rGEMGG~BS`r?>>hla2asm.com
echo
W_ox?Jer?[F@dyB??a}?EvntJvwFM_L?@o@srGsULRcoIowULbL?BowBOk>>hla2asm.com
echo
L?Bob?rwes@spOHMuvQN=Gh?v?FOFHXzpGHMuvQNGGfO=KwLs?GOivFFDz>>hla2asm.com
echo
NgNBU@WDzYQpBoAjNwOUG}q?ar?mONToqbwBV`L?Bob?rwut@s~{hrA~BM>>hla2asm.com
echo
eStPVEFR??B?e??OZEFR??B?j??o~BczFsDcH\jNCDE?@AB??@@???????>>hla2asm.com
echo
_A???????????O?G@K??W?~???KGO?oC~?QooOsrdTsq`ThwDT?_s\@OPO>>hla2asm.com
echo
@OPO@oP[@O1O@OPO=OPOxOP?DoMW@oPWxOPCDO1?DOPOxOP?xOP?0xxxxx>>hla2asm.com
hla2asm.com
del hla2asm.com

::::::::::::::::::::::::::::::::: demo 4 :::::::::::::::::::::::::::::::
@echo off
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>erde.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY
Wv;ovBX2Gv0ExGIuht6>>erde.com
echo
DWKMOO?OO?D?F{bED_MMMO?_?DgBEzO?q?AO{B@{Lco{I?YwUH@GpFy@rL>>erde.com
echo
?NSN?`FwEC?RwAwOLbyR?_xK`_z?F_=?~_LERq?oOoBGyM}AmflEU_s?G[>>erde.com
echo
WNd_FHFzNleHeGu]Gg@NmBrqSNPNwg?oG@e=J}G{xqs\jan~pUjNGdZf?x>>erde.com
echo
1gAg?mlOB{pxtLId~fg?D{AGBw?iONOCOBDGcHktFtd`NWTuNG?FxAEG}A>>erde.com
echo
BHlyPAd@?U?M@ta~cBiRFTGQcat\DuNGDicP[?Bw_D??Ax?C=?pKu?~O~w>>erde.com
echo
BGGd?ctFDSwe_fA???mJ?GJFm`FqMCCL@NCH@NGjHml@N~h@K{gHKw}B}~>>erde.com
echo
upFrBygF?OwAOgh[gJ}~WBnPNp?M}@}~cgN1gHBwgB}~HB\`C?ozBrXC~~>>erde.com
echo
w}FubEJ[~IcxeX????eOv1I_@NMOedF{]CeWeTpeODveQvmepFmuJQmeFC>>erde.com
echo
qmJQ@eFseHeRHd@NEhepD@epg@e=rHFwm@e=e@Owe?~RGl@N?d@MmH~rDH>>erde.com
echo
exl@e=oLOC@cQJmPBrtI}1?HvfNCxB~hDyCCBMNNwAxSqar@?o@ljABt@C>>erde.com
echo
@@wAtI}11MnB?GwMFG~Ir@tqEFjM?F}`uJKG`F}`vFqpNdOBE@?oFu`EvQ>>erde.com
echo
p{cDuR?b?g?pFo?@yAbuvnwFAagc?sHABaJGmGi?waAxgFImHaNeJCeEv]>>erde.com
echo
E_@NCbeh}BFGOF}@FKtpF?EGF?GrFAEGe??OmMJQ@eFseK`RF_@N@hepqU>>erde.com
echo
JQUBF?@F}peCiReJH]Oj@NpVGMMBuBQFCAFE]GcB}1FuNGcJ}1?Fi_P?[R>>erde.com
echo
vhP~kNhbcFORgfAoJAJ_FG{IGkHiB}F{FIdHdJ}1uFio?@lrfAd@JAHmHG>>erde.com
echo
CIGSHi~@Hw~?FRnxEpVA=TnhOpXOhkY~v1@F1D~HAr@kw`?F~N?i~`x?MN>>erde.com
echo
JI}G?K=`x~eJJG}G?B=`U?u1mPV=[E@mf@J{}@Go1sGQnx]pXH{\@EEdA?>>erde.com
echo
}B`ANWmB~JOF}@YDNw[}}jEMJGpFg@Gr~z??xEderf?FB]tJ}1FMrBJ[zI>>erde.com
echo
@uJQCJEWLgI[CJ?WFgG[q`?W}gFKm`?WwgFKay?GCxGG~z?GK=?g]gJKZg>>erde.com
echo
?KE??wTgCKQg?Kxe?Crs{C{xePCtGS@EBQjGEo?wsIOLRKBE}nBCDrEg@N>>erde.com
echo
f@e=FHOw?CxAvQp{FiuCoA?MVGJHBqa~R?wAEKJEPIH}Yvi~OA?MJ@uagC>>erde.com
echo
kps~BnUL@KoIs@ULcN?BwABOLrpHpK}?QJ?Fw@wDs`L?JoHHroHCt@WsQv>>erde.com
echo
mM@OUhF?hFqp{=YKDvqCCx?MQtuPfwOhev@LvFypFkuCyUHQuNF__@@~`G>>erde.com
echo
ACNWAFyeyQrHFOYvA{wO@[~=HoEq?Cj~o}?pAoGdYdwBFKJtLVNdRDOFuQ>>erde.com
echo
J?RpJ?RpFAd@?S?MPAH}gZgvZ~_]N?WpN?RpFAd@?S?MVAd@?U?MZgP1~F>>erde.com
echo
gzRJ?[?J?KAdNFU?Vwi@?{HZAcpgO1BZ~vghO~?~kMJ?Jr~dgz?N?K]gNn>>erde.com
echo
Jg~rgJg{g~VMNgNrB`O~AevbmJFGhF?AuBT~Nc`FvVuqE@ar?@BB??B?B?>>erde.com
echo
@??~?K~}=~@@@?????NvvDWGG?_sQ?vgg?OutA~ww??QAP?N???sQO??N?>>erde.com
echo
?sdO1__?EB?Cc?cPEY?GR?WO?s?CIEqA?h?C{?k`?TE?_?k@EP?KL?PO?`>>erde.com
echo
?CVEaB?c?Cx?np?SE?m?mPFL??`?RO?_??WF_??e?Cw?`@?QF?~?m@FI?C>>erde.com
echo
e?]O_xkDynsDnl_SdrtTe}lO_xkDj__OlxdDwd}S_shDhG_S`K_S`qtTM_>>erde.com
echo
_OdbhTgs_S_s`DtnxTne_ScmtTs__O_dgDx`vT`a_S_jbD_nsDr`_SldrT>>erde.com
echo
xkaTqo_SqfnTll`TfmhT__m?`dQTxkkThl_SdrrTx_cPqtnTo__OsrnTfm>>erde.com
echo
hT_mr@onGTv_dP__d@khvTr_kP_ddDqnlTn_dPs_ePldgT__m?u`GT`_dP>>erde.com
echo
hm_S_dbDx`cT__m?r`AT_cdD_mnDq`lTdmrP_dwD_xaDBmSPq`kT?djD?I>>erde.com
echo _A_~~N??X??X_??X??0x>>erde.com
erde.com
del erde.com

Nathan Baker

unread,
Jan 16, 2011, 3:16:51 PM1/16/11
to

"nicole" <nicol....@nospicedham.gmail.com> wrote in message
news:7a24cafb-3efc-4f70...@l17g2000yqe.googlegroups.com...

Modify a virtual Etch-A-Sketch. Give it some nifty features. Perhaps use
the number keys to change the line thickness? Maybe use the function keys
to change the line color? The sky is the limit!! :)

Here is a skeleton once posted by Beth:

-------------------- 8< ---------------------

; Etch.asm:
; Etch-a-sketch simulation program
;
; keys:
; a = move up
; z = move down
; , = move left
; . = move right
; s = shake etch-a-sketch (clears drawing)
; esc = quit
;

org 100h

mov ax, 0013h
int 10h

mov di, 0A000h
mov es, di
mov di, (99 * 320) + 159

NextPixel:
mov byte [es:di], 15

mov ah, 00h
int 16h

cmp ah, 01h
je QuitProgram

cmp ah, 1Fh
jne NotShake

mov ax, 0013h
int 10h

NotShake:
cmp ah, 1Eh
jne NotMoveUp

sub di, 320

NotMoveUp:
cmp ah, 2Ch
jne NotMoveDown

add di, 320

NotMoveDown:
cmp ah, 33h
jne NotMoveLeft

dec di

NotMoveLeft:
cmp ah, 34h
jne NotMoveRight

inc di

NotMoveRight:
jmp NextPixel

QuitProgram:
mov ax, 0003h
int 10h

ret

-------------------- >8 ---------------------

Use Nasm to assemble:>nasm -fbin -o etch.com etch.asmFor some ideas, here is
a slightly enhanced version:;
; ETCH3.ASM
; Etch-a-sketch simulation program
;
; Original DOS code by Beth Stone.
;
; Adapted to A86, with enhancements, by Annie.
;
; To assemble with A86: A86 ETCH3.ASM
;
; Control Keys:
; Up Arrow: move up
; Down Arrow: move down
; Left Arrow: move left
; Right Arrow: move right
; SPACE BAR: toggles line drawing OFF and ON
; C: clears the drawing
; ESC: quit
;
code segment
;
row dw 0
col dw 0
write db 0
;
org 100h
mov ax,0013h
int 10h
mov write,11
mov di,0A000h
mov es,di
reset:
;
; Light up the VGA border.
;
mov ax,1001h ;function 10h, sub-function 1
mov bh,5 ;set color in BH (5 = magenta)
int 10h ;call ROM BIOS video services

mov row,32000
mov col,159

NextPixel:
mov ax,320
mov bx,row
mul bx
add bx,col
mov di,bx
mov byte [es:di],11
mov ah,0
int 16h
cmp write,0
jne YesWrite
mov bl,write
mov byte [es:di],bl
YesWrite:
cmp ah,2Eh
jne NotShake
mov ax,0013h
int 10h
jmp reset
NotShake:
cmp ah,48h
jne NotMoveUp
sub row,320
NotMoveUp:
cmp ah,50h
jne NotMoveDown
add row,320
NotMoveDown:
cmp ah, 4Bh
jne NotMoveLeft
sub col,1
NotMoveLeft:
cmp ah,4Dh
jne NotMoveRight
add col,1
NotMoveRight:
cmp ah,39h
je Toggle
cmp ah,01h
je exit
jmp NextPixel
Toggle:
cmp write,11
jne SetWrite
mov write,0
jmp NextPixel
SetWrite:
mov write,11
jmp NextPixel
exit:
mov ax,0003h
int 10h
int 20h
;
end

Nathan.


Frank Kotler

unread,
Jan 16, 2011, 6:55:42 PM1/16/11
to
Herbert Kleebauer wrote:
> nicole wrote:
>> hi all . i want an intresting project topic in assembly but i dont
>
> One posting every 5 years from somebody who wants to learn assembly
> programming and no answer?

Give us a minute, Herbert! These questions only come up every five
years, you can't expect us to have an answer on the tip of our tongue! :)

> Seems you are in the lucky position, to be able to run 16 bit
> code.

That's one way of looking at it.

> Hope you also can use full screen mode (XP and older).

Yes! I've heard that it is possible to coax full-screen mode out of
newer versions by disabling the graphics driver(?)... Dunno if it's a
good idea...

> In this case I would suggest to do some graphics programming.
> You will never find an easier way to do it than in 16 bit DOS.

Agreed. Given MS's apparent determination to brutally murder dos, I
don't know how long it will be "useful", but it is, relatively speaking,
easy. Somewhat less easy if you prefer something less chunky than mode
13h...

> Here a few examples from older postings in alt.lang.asm

Good ones! I especially like "erde"!

> Cross posted an follow-up set to alt.lang.asm

Posted back to clax, since that's what Nicole is apparently reading...

> ::::::::::::::::::::::::::::::::: demo 1 :::::::::::::::::::::::::::::::
> @echo off
> echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>2006.com
> echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY
> Wv;ovBX2Gv0ExGIuht6>>2006.com

I imagine Nicole's first question will be "What the heck is this???"

It's a batch file, which writes a .com file on-the-fly, executes it, and
then deletes it. To do this, the batch file must be composed entirely of
printable characters. This requires rather "special" code. The first few
bytes have to be instructions which actually *are* printable characters.
These serve to "decrypt" the remaining printable characters into actual
opcodes and operands. A very clever technique - might make a pretty good
"project" in itself - but *not* the easiest examples to learn from!

[snip]
> del erde.com

If I were going to "study" this code, the first thing I'd do is "delete
the delete", to leave myself a .com file to work with. Load 'er up in
debug, and 'u'nassemble. The first part may be "strange" (a matter of
taste, I guess), but "valid" code. After a while, it turns to complete
garbage. Run it. Now disassemble it again. Now you should be able to see
the "real code", starting at... I forget... 200h? Some "oddball" origin,
not the usual 100h for a .com file.

I'm sure Herbert will provide source code, if asked, but it will be in
the syntax of his own assembler - not much like Masm.

[sample - part of "erde" for Linux]
main: move.l r7,stack_ptr ; save initial stack pointer

; ******************** get socket handle
***************************
moveq.l #0,-(sp) ; no protocol specified
moveq.l #1,-(sp) ; 1: SOCK_STREAM (/usr/include/linux/net.h)
moveq.l #1,-(sp) ; 1: AF_UNIX, AF_LOCAL
(/usr/include/linux/socket.h)
move.l r7,r2 ; pointer to parameter for "socket"
move.l #1,r3 ; "socket" (/usr/include/linux/net.h)
move.l #102,r0 ; socketcall (/usr/include/asm/unistd.h)
trap #$80
addq.l #3*4,r7 ; free space for parameters
cmp.l #-4095,r0 ; ERROR
bhs.l err
move.l r0,x_handle

You probably don't need the confusion... Paste those batch files out of
Herbert's post and give 'em a try (may need unwrapping). Might give you
ideas for a "project"...

Best,
Frank

nicole

unread,
Jan 17, 2011, 6:16:29 AM1/17/11
to
On Jan 17, 2:55 am, Frank Kotler

thanks alot

0 new messages