TỰ HỌC ASSEMBLY

Mới đầu học tập thì mình cũng cho rằng Assembly cực kỳ cạnh tranh - "Hiểu cầm quái quỷ như thế nào được lô EAX EBX cơ ???".Nhưng tin mình đi, Assembly ko cạnh tranh lắm đâu. Ít độc nhất cho tới bây chừ (new học được tẹo), mình thấy thao tác làm việc với "gò EAX EBX" còn đỡ hoa mắt hơn thuật toán thù những :v

Cùng hít mùi hành cùng với Assembly 32bit làm sao :v

1. Cài đặt môi trường "học tập"

1.1 Windows

Trên Windows thì hoàn toàn có thể download masm cùng code trên Visual Studio:

Link chỉ dẫn tạo thành project asm:


Ngoài Visual Studio ra thì bản thân thấy IDE SASM cũng khá ổn định. Ưu điểm là dịu, có thể biên dịch được cả x86 và x64 trường hợp về sau học tập lên x64.

Bạn đang xem: Tự học assembly

Để cho luôn thể thì khi tham gia học Assembly phần lớn bạn yêu cầu download IDE nhằm debug thuộc 1 nơi luôn luôn. Theo kinh nghiệm tay nghề cá thể bản thân thì khi new học cơ mà không tồn tại debugger nhằm chạy thì truất phế 1 nửa.

1.2 Ubuntu

Trên ubuntu thì đơn giản và dễ dàng hơn khi gõ 1 lệnh là thiết đặt chấm dứt nasm luôn luôn (masm đến Windows còn nasm cho Linux). Mọi tín đồ chỉ việc copy đoạn shell script này vào 1 file text, thay đổi đuôi file thành .sh.

#!/bin/bashsuvị apt install nasmsubởi apt-get install lib32gcc-4.8-devsuvì apt install gcc-multilibwget http://tải về.opensuse.org/repositories/home:/Dman95/xUbuntu_18.04/amd64/sasm_3.10.1_amd64.debsuvì dpkg -i sasm_3.10.1_amd64.debSau đó chạy lệnh: bash .sh

Với các phiên phiên bản ubuntu không giống 18.04 thì hồ hết tín đồ vậy 18.04 sinh sống link trong lệnh wget thành phiên bạn dạng của bản thân mình là được. Lưu ý là bây chừ chưa xuất hiện nasm cho những phiên bạn dạng Ubuntu cao hơn nữa 18.04 nhé.

2. Kiến thức nền tảng

Cài ngừng môi trường thiên nhiên rồi thì hầu hết bạn cứ nhằm đấy đã, cùng học tập thêm về các kiến thức và kỹ năng nền tảng.Một số cái chúng ta đã được cho là trường đoản cú trước rồi mà lại không kỹ, một trong những thì mới trọn vẹn. Chúng ta cần được nắm rõ gần như kỹ năng này trước khi bắt tay vào code, hay là đã vấp váp đề xuất 1 đụn lỗi mà lại chẳng đọc tại sao, chưa biết sửa phong cách gì.Vì một vài kỹ năng vẫn vượt đa dạng, đề nghị bản thân đã chỉ nói thêm về những cái bình thường bọn họ ít khi biết tới.

2.1 Biểu diễn dữ liệu

Trong Assembly bạn có thể trình diễn dữ liệu dưới các dạng:

Nhị phân (Binary)Thập lục phân (Hex)Thập phân (Decimal)Bát phân (Octal)

Bốn dạng biểu diễn trên thực ra là nhằm bé fan quan sát thôi, cho dù hiển thị nghỉ ngơi dạng nào đi nữa thì máy tính cũng biến thành chỉ giữ và thao tác cùng với tài liệu dưới dạng nhị phân. Thường thì dữ liệu sẽ tiến hành hiển thị bên dưới dạng Hex mang lại họ xem, bởi vì chuyển từ bỏ Bin sang Hex nhân thể rộng từ bỏ Bin sang Dec.

Quý Khách gồm biết bởi vì sao các chi phí bối lại thi công máy vi tính đưa từ bỏ Bin -> Hex mang đến bọn họ phát âm ?Mà chưa hẳn từ bỏ Bin -> Dec, trong khi bé bạn quen thuộc thao tác cùng với số thập phân độc nhất không ?Đáp án làm việc cuối bài

Assembly x86 sẽ làm việc với tài liệu 32bit, khoảng tầm màn trình diễn như sau:

Dạng biểu diễnMinMax
Dec-2,147,483,6482,147,483,647
Bin11111111 11111111 11111111 1111111001111111 11111111 11111111 11111111
Hex80 00 00 007F FF FF FF

Nhìn min = 80 00 00 00 còn max = 7F FF FF FF tương đối kỳ lạ đúng không ạ ? Rõ ràng 7F FF FF FF + 1 = 80 00 00 00 nhưng ?Yên trung ương, kia là vì giải pháp máy tính xách tay trình diễn với số gồm vệt.

2.2 Biểu diễn số ngulặng có vệt trong lắp thêm tính

2.2.1 Phương pháp dấu lượng

Trong cách thức vết lượng, bit đầu tiên phía trái (MSB - Most Significant Bit) được áp dụng làm cho bit vết. Nếu là số dương thì bit dấu = 0, còn số âm thì bit lốt = 1.

Các bit sót lại sẽ tiến hành dùng để màn biểu diễn quý hiếm. Bởi vậy khoảng cực hiếm có thể màn trình diễn đã chỉ với -2^(n - 1) --> 2^(n - 1) - 1.

Xem thêm: Linh Kiện Máy In Canon 2900, Linh Kiện Máy In Canon Lbp 2900

VD:

Số 5 trong hệ nhị phân: 00000101Số -5 vào hệ nhị phân: 10000101

Cách màn biểu diễn này có một điểm không đồng bộ, đó là số 0 sẽ có được 2 bí quyết màn biểu diễn là 00000000 (+0) và 10000000 (-0)

Phương pháp này được các laptop ráng hệ đầu tiên nlỗi IBM sử dụng.

2.2.2 Phương pháp bù 1

Pmùi hương pháp bù 1 tựa như phương thức lốt lượng, chỉ khác sinh sống cách màn biểu diễn độ mập của số:

Nếu là số dương thì bit dấu = 0Nếu là số âm thì đảo những bit giá trị, bit vệt = 1

VD:

Số 5 vào hệ nhị phân: 00000101Số -5 trong hệ nhị phân: 11111010

Với phương pháp bù 1 thì số 0 vẫn có 2 phương pháp màn biểu diễn là 00000000 (+0) cùng 11111111 (-0)

Khi thực hiện phnghiền cộng với số nhị phân bù 1, ví như sau khoản thời gian cộng bit ghi nhớ = 1 thì buộc phải thêm vào đó bit lưu giữ vào kết quả vừa thu được. Điều này phiền phức Khi máy tính xách tay tiến hành các phép toán.

Phương pháp bù 1 được các máy tính núm hệ cũ nhỏng PDP., UNIVAC áp dụng.

2.2.3 Pmùi hương pháp bù 2

Phương pháp bù 2 sẽ có sự đổi mới nhằm mục tiêu dễ dàng hơn vào vấn đề tính tân oán với số nhị phân, nạm thể:

Nếu là số dương thì bit vết = 0Nếu là số âm thì bit vệt = 1, hòn đảo các bit cực hiếm sau đó cùng thêm một vào hiệu quả.

Cách biểu diễn bù 2 Thành lập và hoạt động nhằm mục đích hạn chế và khắc phục 2 sự việc của phương pháp dấu lượng và phương pháp bù 1:

Số 0 có 2 biện pháp biểu diễnBit lưu giữ gây ra sau khi sẽ thực hiện phnghiền tính đề nghị được cùng tiếp vào kết quả

Việc thay đổi lốt 1 số tự âm dương phần đa được tiến hành theo một cách duy nhất: hòn đảo toàn bộ các bit với cộng thêm 1.lúc triển khai phnghiền cùng cùng với số bù 2, nếu như tạo nên bit lưu giữ ngơi nghỉ bit vệt, ta có thể quăng quật nó đi.

Hiện nay các máy tính xách tay hiện đại áp dụng phương pháp bù 2.

2.2.4 Bù 2 cùng với hệ cơ số 16

Bù 2 vào hệ cơ số 16 không tồn tại gì đổi khác, vẫn luôn là đảo toàn bộ những bit cùng cộng thêm 1. Việc đảo bit vào Hex khôn cùng đơn giản và dễ dàng, chỉ cần trừ từng ký kết từ bỏ Hex đi 15:

6A3 chiều --> 95C2 + 1 --> 95C395C3 --> 6A3C + 1 --> 6A3D

2.3 Kích thước lưu lại trữ

Đơn vị tàng trữ dữ liệu cơ bạn dạng của các máy tính xách tay 32bit là byte gồm size 8bit. Trên byte còn có word (2 bytes), doubleword (4 bytes) với quadword (8 bytes).

*

Khoảng màn trình diễn của chúng nlỗi sau:

*

2.4 Biểu diễn xâu

String trong máy vi tính được màn trình diễn bằng 1 mảng những quý giá khớp ứng cùng với ký từ bỏ kia vào bảng ASCII. Thông thường đã viết bên dưới dạng Hex, ít tín đồ viết bên dưới dạng thập phân.VD: xâu “ABC123” có thể hiển thị bên dưới dạng 41h, 42h, 43h, 31h, 32h, 33h.

2.5 Biểu thức đại số Boolean

Có 4 biểu thức boolean sau:

ANDORNOTXOR

Những biểu thức này vượt cơ phiên bản rồi đề nghị mình sẽ không còn nhắc thêm cụ thể nữa. Trong Assembly thì những biểu thức này sẽ tiến hành thực hiện nhiều. VD như: áp dụng AND để lập bit, XOR nhằm xóa bit, .... với nhiều chức năng giỏi ho khác mà bọn họ sẽ không biết còn nếu không học tập Assembly :3

Đáp án: https://thongcongnghetaz.com/p/vi-sao-chung-ta-thuong-su-dung-hex-nhieu-hon-dec-Ljy5V77zKra