Tôi thực sự khuyên bạn nên xem xét lại mục tiêu của mình và đây là lý do:
Lần đầu tiên tôi học ngôn ngữ hội 6502 trên Máy vi tính BBC (Model B, 32K). Nó đã có một triển khai BASIC tuyệt vời bao gồm một trình biên dịch macro. Chúng tôi có chúng ở trường nên tôi đã viết tất cả các chương trình tinh nghịch sẽ làm những việc như thao tác đệm màn hình trực tiếp để thực hiện bước đi Lemming trên mỗi màn hình, xung quanh phòng (chúng được nối mạng) nếu máy móc đã được sử dụng trong 10 phút . Nó dẫn đến những tiếng cười khúc khích giữa những người bạn Lớp 7 của tôi.
Khi tôi có một chiếc Commodore 64 ở nhà, tôi đã biết rằng nó có CPU 6510 cũng chạy ngôn ngữ lắp ráp 6502 nhưng với một số tính năng bổ sung thú vị. Tôi đã phải mua một trình biên dịch (đi kèm hộp mực ) và gọi các chương trình thông qua BASIC. Với tầm nhìn lớn về việc viết một trò chơi bán chạy nhất, cuối cùng tôi đã xoay sở để tạo ra một số bản demo mà các phần cứng hiển thị video bị xoắn đôi khi bị gián đoạn để thực hiện các hiệu ứng thanh màu thú vị mà hoạt hình thành nhạc chip vui nhộn. Ấn tượng, nhưng không hữu ích.
Sau đó, tôi đã nhận được một chiếc Acorn Archimedes A310 có CPU ARM2 vì vậy tôi đã sử dụng cùng một triển khai BASIC tuyệt vời với trình biên dịch macro tích hợp như BBC Micro (cùng di sản). Tôi đã xoay sở để kết hợp một vài trò chơi mà một người bạn giàu có cung cấp đồ họa, cộng với một số bản demo trippy dựa trên hình sin. Cả hai đều khó để lập trình và mã xấu có thể làm hỏng máy (vô tình vấp phải thanh ghi thiết lập lại phần cứng, v.v.), mất tất cả mọi thứ nếu tôi không lưu (vào đĩa mềm!).
Tại trường đại học, tôi đã được giới thiệu về C ++ và do đó C. Tôi đã có thể sử dụng nó để lập trình Sun / Solaris và một số máy tính lớn khác. Tôi không biết CPU kiến trúc những máy này chạy trên cái gì - Tôi không bao giờ cần sử dụng trình biên dịch hoặc đọc mã máy vì các công cụ C ++ đã cho tôi sức mạnh tôi cần để tạo ra các ứng dụng chuyên nghiệp.
Sau Uni, tôi đã làm việc trên Windows và một số hương vị của Unix. C và C ++ đã làm việc trên tất cả các máy này và cuối cùng Java cũng vậy.
Sau đó tôi đã làm việc trên Windows và Dreamcast bằng C ++ với DirectX với chuỗi công cụ toàn diện để gỡ lỗi.
Sau đó, tôi đã nhận một công việc làm việc với các chipset dựa trên ARM cho TV thông minh (năm 2000). Mặc dù kinh nghiệm của tôi với ARM2 có thể có liên quan ở đây, công việc dựa trên C. Tôi thấy rằng tất cả những điều thú vị về phần cứng mà tôi đã thực hiện trên Archimedes cũng có thể được thực hiện trong C bằng cách sử dụng các thao tác vặn bit đơn giản. Một phần vai trò của tôi là di chuyển cơ sở mã sang Windows, Playstation 2, Linux, các chipset và TV di động khác. Tất cả các nền tảng này đều có sẵn với cả trình biên dịch C (thường là GCC) và một số cấp độ API để ghi vào máy bên dưới - thế giới nhúng hiếm khi là O / S kernel. Tôi chưa bao giờ cần biết mã máy đầy đủ cho bất kỳ nền tảng cụ thể nào ngoài việc viết bộ tải khởi động và mini-BIOS, cả hai đều nhảy vào mã C trong cơ hội có sẵn đầu tiên (sau khi thiết lập các vectơ bẫy,
Công việc tiếp theo là làm việc với C ++, C # và JavaScript trên Windows. Không có mã máy.
Công việc hiện tại đang làm việc với C ++, JavaScript, Python, LUA, HTML và các ngôn ngữ khác trên các nền tảng khác nhau. Tôi không biết những nền tảng nào mà các nền tảng này chạy, tôi cũng không cần biết - trình biên dịch sẽ dịch mã của chúng tôi thành bất cứ thứ gì nó cần. Nếu nó gặp sự cố, tôi bắt lỗi trong trình gỡ lỗi hoặc thông qua chẩn đoán thời gian chạy (ngoại lệ, tín hiệu, v.v.).
Để giải trí, tôi phát triển các ứng dụng iOS vào thời gian rảnh rỗi tôi có ở nhà. Nó sử dụng Objective-C và API hoạt động trên nhiều chipset. Rõ ràng chúng dựa trên ARM, nhưng tôi chưa bao giờ thấy bất kỳ mã máy nào trong quá trình phát triển của mình.
Mặc dù đây là một bài tập hấp dẫn để học ngôn ngữ lắp ráp, nhưng hiện nay có các công cụ và ngôn ngữ cấp cao hơn nhiều cho phép bạn trở thành một người có trình độ (hoặc hai) hiệu quả hơn.
Số cơ hội việc làm dành cho một lập trình viên ngôn ngữ / mã máy lắp ráp tuyệt vời rất nhỏ so với những thứ như JavaScript, Java, C #, C ++ hoặc ObjC.
Tôi khuyên bạn nên biến điều này thành sở thích / lợi ích phụ hơn là mục tiêu chính.