Brent Dax (brentdax) wrote,
Brent Dax
brentdax

  • Mood:

Weekend

I spent most of the weekend hacking on my assembly assignments, which I did in fact finish. A few highlights:

; Class		:	CIS 40A (Assembly)
; File		:	hw6/hours.asm
; Assignment	:	Homework #6 - convert minutes to hours/minutes
;			(due 11/10/03)
...
; Song		:	Evanescence - Lies

; Class		:	CIS 40A (Assembly)
; File		:	hw4/your.asm
; Assignment	:	Homework #4 - program that prints three messages
;			(due 11/10/03)
...
; Song		:	Royksopp - Poor Leno

msg1 db "UBERCRYPT 1.0 KEY GENERATOR",				0
msg2 db "Your passphrase is 'Fred Foonly'.",			0
msg3 db "Enter any 11-digit prime number to continue...",	0

mov BX, CX			; Needs to be in BX for the next line.  Stupid hardware weenies.
mov byte [BX+DI], 0		; Place the null.

mov BX, CX			; You have to use BX with base-index for some strange reason
mov byte [BX+DI], 0		; Place the null.

; At this point, CX is 65534 - the length.
; I'm not really sure why the extra character worth of fudge factor is needed,
; but it is.
mov AX, CX			; I really want to do CX = 65534 - CX, but the instruction
mov CX, 65534			; set doesn't allow that.  This mess is equivalent to that.
sub CX, AX			; With this, CX is now the length of the string.

cmp AX, 0			; Check for 0.  For reasons I have yet to determine (but  
jne therest			; which probably lie in the scaling code), zero values result
				; in divide-by-zero errors, which is rather suboptimal.


(BTW, sorry if the formatting's odd. I'm doing the best I can.)
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments