Tôi mới để lắp ráp và tôi đang cố gắng để hiểu Linux 0.01 đang bootloader nhưng tôi đã bị mắc kẹt ở phần này (tại rất beggining :)):lặp lại hướng dẫn mov x86
.globl begtext, begdata, begbss, endtext, enddata, endbss
.text
begtext:
.data
begdata:
.bss
begbss:
.text
BOOTSEG = 0x07c0
INITSEG = 0x9000
SYSSEG = 0x1000 | system loaded at 0x10000 (65536).
ENDSEG = SYSSEG + SYSSIZE
entry start
start:
mov ax,#BOOTSEG
mov ds,ax
mov ax,#INITSEG
mov es,ax
mov cx,#256
sub si,si
sub di,di
rep
movw
jmpi go,INITSEG
Mã này (như đã giải thích ở source comments copies) bộ tải khởi động đến vị trí mới và tiếp tục thực hiện từ go. rep theo sau là mov nên thực hiện việc này (sao chép một phần), nhưng thay vào đó hãy sử dụng hướng dẫn mov {w}.
rep
movw
Trong mỗi cuốn sách tham khảo cho x86 Tôi nhìn đại diện được sử dụng với các hướng dẫn chuỗi.
Có thể đại diện được sử dụng với tất cả hướng dẫn chuyển dữ liệu hoặc chỉ dẫn chuỗi và nếu vậy tại sao nó không được đề cập trong sách hướng dẫn tham khảo?
Vì vậy, trong khi lắp ráp _rep movw_ sẽ được dịch sang _rep movws_ opcode? –
'rep movsw'. Mặc dù, một lần nữa, đó là một ký hiệu thực sự kỳ quặc (một trong câu hỏi ban đầu của bạn). Bạn có biết người lắp ráp được viết cho ai không? –