For my programming class this semester we are learning about Intel Microprocessors and Assembly Language. When we are in lab we use Virtual Machine to code. I have VM installed on my laptop and it has been nothing but trouble. I thought I had an old laptop at home but can't seem to find it. I figure I ought to be able to get something top of the line from back in the day for under $40. Does any one have any recommendations? So far I know that my RAM is limited to 512MB. Other than that I'm clueless. TIA
Yes: don't. You would be well served to figure out why your VM is having problems, especially if your class VM works fine, but your home VM doesn't. I deal with a lot of programmers who need to use virtual machines for all sorts of problems and flounder around trying to avoid it at all costs.
Agreed, don't. Virtualization gives you possibilities you'd never get on a physical machine wrt low-level stuff, maybe later on you'll need them... Sounds like it might be a VMware Player (free but restricted) vs commercial VMware issue, or your hardware not having virtualization extensions that your lab machines have. Or you're using a different version (as in, earlier/later release) of the virtualization software. Or your CPU is too different from the lab's (unless you're using sth like Bochs, the CPU is basically "passed through" into the VM so hardware differences do show in there).
I think what I use on campus is VMware Player. The machines in the engineering lab run Linux, have 8 cores ,and dual screens. It's a real pain to use VM on a laptop, which is the only thing I have down at school. If I had my desktop down here with dual monitors, I would be all for VM. I just thought that starting with a clean install/work space would give me the smoothest experience. Can you explain further why that's not true? I really do want to have two laptops, so I can keep everything compartmentalized. e.g. Do research on my normal laptop and test on the WIN98 laptop. The computers in the lab do run fairly well. Although, they crash and can be a bit choppy at times. I could live with a similar setup on my normal laptop. But, that still doesn't solve the problem of me being picky and wanting dual monitors. We really aren't doing anything complex in the class. 1. Write a code.asm file in notepad 2. Run MS-DOS 3. Run turbo assembler 4. Run tlink 5. test If the verdict is still that I should set up a proper virtual machine I will take your advice. What would be the best program to use? Specs: Intel i5-2450M @ 2.5GHz 8 GB RAM Win 7 64-Bit Thanks
I think the biggest recommendation is that learning the Virtual machine software is worth the time and effort. I like Virtualbox a lot mostly because it's free and has all the features. (well most of them it seems) I think the only time you really need a machine is if you need access to some hardware. (Old ISA or PCI card)
Overall you don't give us all that much info to go on... Doesn't sound like you're doing any advanced stuff (not even single stepping and/or examining regs), no idea why your lab chose W98 for that... If you really want to start from scratch I guess pretty much anything will do, even DOSBox (unless that DOS is just to bootstrap into your own OS). Pragmatically, you would use what your lab uses, and make a copy of their VM. Personally I'd go with Bochs for the really low level stuff (debugging bare metal shit), QEMU for general use (playing around with random OSes, or stuff that doesn't work in DOSBox) and DOSBox for when I know I'm only gonna run DOS code, but that's just me.
If you want to use real DOS anyway, then you don't actually need Windows 98. You just need to make a bootable USB disk that boots DOS. It'll work on any machine that supports booting from a USB disk. There are also USB drivers for DOS - so you can also access filesfrom USB disks.
I'm going to continue using Oracle Virtual Box until I figure out the other mentioned programs. I have set "Clip Board and Drag N Drop" to bi-directional but I still cant transfer files between the two systems. I think It has something to do with the "Guest Editions CD"?
No, the "clipboard dnd" is indeed for clipboard contents, not files. I'm thinking that VB's guest extensions don't support win9x, perhaps...?
Do you want an old laptop for any additional reasons? A Thinkpad T21 should work pretty well for the specs listed. If it's just for this class, you really don't need to buy anything.. Might as well save that money you were going to spend and put it towards future loan payments or books for next semester.
I found a great program that does exactly what I need "GUI Turbo Assembler x64". Compile, link, load, and Execute with one click. Hopefully I can continue to use it for the remainder of the semester.
Uhhh, as time passes this statement gets more and more convincing. I can't even find any good videos that only use 16 bit registers and TASM. The best thing I found was using 32 bit and NASM. The further I got into them, it just made it more complicated to translate everything. I don't understand, Windows 98 is 16/32 bit. So I can use 32 bit registers like EAX but I can't use the 32 bit instruction set? For homework we have to design a calculator program that parses the input. I have everything working correctly but the parsing and I can't figure it out. The way it is supposed to be done is, Enter an algebraic Expression: 5 + 5. The way I'm doing it uses 3 prompts. Enter num1: 5 Enter num2: 5 What operation to Preform?: + Any help would be appreciated.
Here's two hints: Spoiler asciitable.com and Spoiler Code: int atoi(const char* input) { int result; for(result = 0; *input; input++) result = (result * 10) + (*input - '0'); } return result; }
This is what I have done to parse the function. I've worked backwards to the simplest form and still nothing makes sense to me. I found a working Turbo debugger set up and still nothing clicks. When I do a trace, the stack never shows any information. Code: MOV AL, 20H MOV DI, OFFSET BUFFER CLD MOV CX, 100H REPNE SCASB MOV BX, DI MOV SI, DI MOV DI, OFFSET OPERATOR MOVSB MOV CX, BX DEC CX SUB CX, OFFSET BUFFER MOV SI, OFFSET BUFFER MOV DI, OFFSET NUM1ASCII REP MOVSB ADD BX, 2 MOV AL, 0DH MOV DI, BX MOV CX, 100H REPNE SCASB DEC DI MOV CX, DI SUB CX, BX MOV SI, BX LEA DI, NUM2ASCII REP MOVSB
I'm not too well-versed with x86 assembly so I cannot quite help you with your assignment. Basically, there isn't anything in the stack because your program doesn't use the stack. To debug, you're just suppose to set breakpoints and/or step through your program to ensure that it's working as required.
I finally got everything working correctly. What is the difference between trace and step? At this point shouldn't have something shown up on the stack?
Like I wrote earlier, you aren't using the stack and so nothing will turn up there. Stepping means to traverse the program, instruction by instruction. I think that traces are debug messages... but I don't use them and so I am not totally sure about that.