Assembly Programming

Brentontw

Well-Known Member
Joined
Jul 13, 2015
Messages
265
Reaction score
0
So this is a question posted to IT professionals out in the market at the moment. I am a second year university student studying BSc I.T at Tuks and one of our modules this semester revolves around Assembly and programming in the language. While I understand it's powerful, it's just rather difficult to grasp and code at such a low level.

Is this language even used in the current job market or are we just being taught this for some understanding of the fundamental concepts etc.? Personally I can't see it as an effective way to design anything or am I judging it too quickly?
 
Its mostly niche jobs where you will use something that low level. That being said if you can comprehend something at that level it makes understanding everything above it so much easier.

You will find that your study units are less focused on the real world applications and more to teach you the fundimentals you will use for the rest of your life no matter what technology you are applying it to.
 
Last edited:
No , assembly is not used day to day in a typical development environment and it used only in very specialized projects , most of which you will never be hired for.

However , understanding how a compiler works and its underpinnings is essential background working knowledge for any developer , as it will help you better understand higher level languages and their nuances. For example , if when compiling C# code the compiler throws an error you are unfamiliar with , diagnosis becomes a lot easier with an understanding of what its doing and how it works.
 
It's not used typically, however, as others have stated it is essential for understanding how a compiler functions.

I personally use it fairly regularly in my work - it is fundamental for anyone working on performance critical code, device drivers, operating systems or various types of specialized programmable hardware (that often may not have high level compilers at all).
 
I'm glad I learned assembler. It was really quite difficult. But your understanding of computing fundamentals will forever be so much more superior than current day high level programmers.
 
Assembly was the first language I learned, I used it for multi media optimizations in decoding and compression at my first job. I dabble with it now and then. Its value to learn, but can be pretty painful.
 
count me as one of those non real developers then.... :p
 
Assembly was the first language I learned, I used it for multi media optimizations in decoding and compression at my first job. I dabble with it now and then. Its value to learn, but can be pretty painful.

I used it to emulate an analogue modem with some D/A converters. We were on 2400bps at the time, but the rich early adapters were speeding along at 9600bps
 
Code:
; Wolf128 by Baudsurfer/rsi 2014 aka olivier.poudade.free.fr
; A 128 bytes interactive intro tested on XPSP3 and DOSBox
; Presented at Outline demoparty in Eersel/The Netherlands
; 256 bytes versions : 
; http://www.pouet.net/prod.php?which=24755
; http://www.pouet.net/prod.php?which=3396
; P.S : click left mouse button to start moving in maze
; Greets to UkkO Ggn Fra Den and assembly language lovers 
  org 100h
  mov al,13h
  int 10h
  les dx,[bx]
A:mov cl,0ffh
B:mov bl,cl
  not bl
  lea ax,[di-10h]
  mov bp,140h
  cdq
  div bp
  call G
  call G
  test byte [1dh],7
  jz C
  add dh,[1fh]
  sub bl,[1eh]
  jmp short E
C:mov dl,[fs:46ch]
  sub bl,[si]
  test dl,40h
  jnz D
  add dh,dl
D:add bl,dl
E:shld bp,bx,10
  sub dh,[bp]
  mov al,dh
  and dh,bl
  or dh,ah
  and dh,20h
  loopz B
  xor al,bl
  xor al,ah
  db 0d4h,10h
  add al,10h
  stosb
  or di,di
  jnz A
  mov ax,3
  int 33h
  test bl,al
  mov [1dh],bl
  jz F
  mov [1eh],dl
  mov [1fh],cl
F:in ax,60h
  dec ax
  jnz B
G:xchg ax,dx
  sub ax,64h
  imul ax,bx
  add ax,[si]
  ret
 
I am busy learning assembly and I am loving it. I want to get into reverse engineering so knowing low level programming would be helpful.
 
I am busy learning assembly and I am loving it. I want to get into reverse engineering so knowing low level programming would be helpful.

What do you want to reverse engineer ?
 
Assembler is still used mainly on the mainframe arena. We have a few Assembler routines that we call, mostly for date calc functions or remote job entry.
 
Did assembly at varsity. Never wrote any production code in it. I'd probably kill someone if I tried.

Though, assembly is very interesting and puts a lot into perspective. It's just shy of writing binary lol. In any case, I cannot remember much from it...
 
If you need raw speed, you can't really beat assembly. However it is a waste of time if you do it without seeing if there is an easier way to do the operation first.
 
What do you want to reverse engineer ?
I am doing it for exploit development. Preparing myself for Offensive Security Certified Expert https://www.offensive-security.com/...ons/osce-offensive-security-certified-expert/ course


I started there but moved very quickly from there. Right now im doing this http://www.securitytube-training.com/online-courses/securitytube-linux-assembly-expert/ then I will be moving on to this https://www.corelan.be/index.php/articles/ the "Exploit Writing Tutorials" section.
 
No , assembly is not used day to day in a typical development environment and it used only in very specialized projects , most of which you will never be hired for.

However , understanding how a compiler works and its underpinnings is essential background working knowledge for any developer , as it will help you better understand higher level languages and their nuances. For example , if when compiling C# code the compiler throws an error you are unfamiliar with , diagnosis becomes a lot easier with an understanding of what its doing and how it works.

Bearing in mind that c# is compiled into MSIL assemblies which are interpreted, much of MSIL 'looks like' assembly to some degree yet is not. Proper assembly maps directly to a specific architecture and is compiled into machine code. (MSIL is interpreted and run via just-in-time compilation)

As an aside, it is useful to know MSIL when doing low-level c# Reflection routines.

In our compiler-construction course which followed assembly, we learned how higher level languages such as c / c++ implement certain constructs which gave insights into how expensive they are (eg. CPU ticks).
 
Last edited:
I am doing it for exploit development. Preparing myself for Offensive Security Certified Expert https://www.offensive-security.com/...ons/osce-offensive-security-certified-expert/ course



I started there but moved very quickly from there. Right now im doing this http://www.securitytube-training.com/online-courses/securitytube-linux-assembly-expert/ then I will be moving on to this https://www.corelan.be/index.php/articles/ the "Exploit Writing Tutorials" section.

Are you in the computer security field? What's the scope like? I've been keen to look into moving into computer security as a long-term career move. It seems to be well paying, secure, and very mentally challenging...
 
If you think programming is about the language you learn then I think you're doing the wrong degree there dude. Maybe do something like gardening/agriculture then?
 
Are you in the computer security field? What's the scope like? I've been keen to look into moving into computer security as a long-term career move. It seems to be well paying, secure, and very mentally challenging...

Yes I am current in the computer security industry doing the usual penetration testing, vulnerability assessments and social engineering for clients. I do want to get into more advanced stuff hence why I am doing and will do the stuff i listed in my previous post.
 
Top
Sign up to the MyBroadband newsletter
X