Re: Why I stop attacking HLA
- From: "randyhyde@xxxxxxxxxxxxx" <randyhyde@xxxxxxxxxxxxx>
- Date: 4 Sep 2005 21:15:46 -0700
Herbert Kleebauer wrote:
> "randyhyde@xxxxxxxxxxxxx" wrote:
>
> > By providing IF/WHILE/etc
> > "macros" you allow the students to begin doing useful things on day
> > one, mastering other concepts in assembly language (such as how to do
> > simple arithmetic)
>
> Is this "High Level Logic" or "Low Level Logic" or simple
> illogical? Why do you need "IF/WHILE/etc" to do simple arithmetic?
Clearly, you don't have much experience teaching a large number of
students assembly language, or you would understand why it's nice to
progress in this manner.
In a formal course, in a formal program where people are taking three
other classes in addition to your course, you don't get to give a lot
of different programming assignments. If you could give a different
assignment every day, then perhaps "let's experiement with 'MOV' today,
'ADD' tomorrow, and 'SUB' the day after that" would work great. *Even*
if this were logistically possible (and it's not), you'd hear the
students crying about "busy work" and nonsensical assignments because
you can *do* much with just a mov, add, or sub instruction. OTOH, if
you give them more meaningful assigments that use a bunch of these
instructions (and a few others), then they're going to be more
interested in the assignment and you won't hear the complaints about
"busy work" and "worthless assignments" (well, not as much anyway).
The only problem is that you cannot give substantial assignments during
the first couple of weeks because they don't know enough machine
instructions to do this. Hence the use of HLL-like control structures
during this time period.
One other thing to consider, too. The more *programming* you have the
students do, the better programmers they become. If you put off doing
substantial projects (i.e., above the level of MOV/ADD/SUB) for several
weeks, you've cheated the students out of a lot of valuable programming
time that they could use to hone their general programming skills
(regardless of language in use).
> To explain an add or sub instruction you need no "IF/WHILE/etc".
> And when you explain the add/sub instruction then you also have
> to speak about the flags.
Not really. Why do you need to know about the flags?
Keep in mind that students in the first few weeks of an assembly class
are learning things like numeric (e.g., hex) representation, how data
types are represented at the machine level, and other machine
organization topics like that. Certainly some computer architecture
gets taught along the way, but not right way (closer to the third week,
for example). You seem to think that students can absorb all this
information at once. They cannot. Try teaching several classes
sometime and you'll quickly discover that you have to pace the material
appropriately, or you lose 90% of the class. It would be nice to teach
to the 10% of the students who understand everything the first moment
they see the stuff. But let me clue you in on a simple fact -- you're
*not* teaching those people; they learn the stuff all on their own. As
an instructor, you're there for the 75% of the students smack dab in
the middle of the bell curve who can really benefit from your guidance.
And having them "drink from a firehouse" isn't a good way to teach
them.
>
> > until they've gained enough experience to learn the
> > underlying CMP/Jcc mechanisms so they can write assembly language the
>
> And if they know the flags, which "experience" do they need to
> understand "jump if carry flag is not set"?
It's a completely different programming paradigm for them. You're
assuming that if you teach them about the flags (a day or two's
lecture, btw) and throw a couple dozen Jcc instructions at them,
they'll automatically know how to use these instructions to make
decisions, form loops, stuff like that. It doesn't work that way. First
you teach them about the flags. *Then* you teach them how the Jcc
instructions operate. *Then* you teach them how to construct statements
like IF/WHILE/SWITCH/etc using these statements. This process takes a
couple weeks *after* they've already learned quite a bit of the
instruction set already. If you think it can be done faster, well that
simply demonstrates that you don't have much experience teaching a
large number of students who've never seen assembly language (or
anything like it) before.
>
> > right way. But the bottom line is that before they finish the course,
> > they are no longer using IF/WHILE/etc. in their assembly programs. They
> > are writing pure assembly code at that point.
>
> Instead of writing High Level Assembler code ("IF/WHILE/etc") from
> the first day and "pure assembly code" at the last day, they could
> start with "pure assembly code" from the first minute and at the last
> day they would know anything about segment and paging tables, interrupts,
> taskswitch and protection.
Been there, done that. By the end of the quarter they've not gotten as
far as when they've started with a high-level assembler. That's the
bottom line.
Cheers,
Randy Hyde
.
- Follow-Ups:
- Re: Why I stop attacking HLA
- From: Herbert Kleebauer
- Re: Why I stop attacking HLA
- References:
- Re: Why I stop attacking HLA
- From: anonymous
- Re: Why I stop attacking HLA
- From: randyhyde@xxxxxxxxxxxxx
- Re: Why I stop attacking HLA
- From: anonymous
- Re: Why I stop attacking HLA
- From: randyhyde@xxxxxxxxxxxxx
- Re: Why I stop attacking HLA
- From: Herbert Kleebauer
- Re: Why I stop attacking HLA
- Prev by Date: Re: Donkey's main point as per Microsoft.
- Next by Date: Re: Hutch's main points as per Intel
- Previous by thread: Re: Why I stop attacking HLA
- Next by thread: Re: Why I stop attacking HLA
- Index(es):
Relevant Pages
|