Vì vậy, tôi đang viết một trò chơi bằng c + + cho MS-DOS và tôi bao gồm một số lắp ráp nội tuyến cho tốc độ. Khối mã đặc biệt này sẽ vẽ một ngôi sao vào bộ nhớ video (0A000h). Vấn đề với mã của tôi là nó chỉ vẽ một pixel trong bất kỳ màu nào dh được đặt thành. Theo như tôi biết mov dx, 00007h tương đương với thiết lập dh thành 0 và dl thành 7. Điều gì là sai?Có gì sai với mã assembly của tôi
Mã C/C++ tương đương (hoặc ít nhất là ý định của tôi) được nhận xét bên cạnh mỗi dòng. Trình biên dịch của tôi là turbo C++ 3.0. Tôi đang cố gắng chỉ sử dụng hướng dẫn 8086/8088.
Ngoài ra tôi biết cách MS-DOS cũ như vậy không cho tôi biết để viết mã cho trình biên dịch/hệ điều hành mới hơn. Viết mã cho dos là một sở thích của tôi.
pixelOffset = x + (y << 6) + (y << 8);
_asm {
mov ax, WORD PTR pixelOffset
mov di, ax
mov ax, 0A000h ;pointer to the video memory
mov es, ax
mov dx, 00007h ;indexed color 00 and 07
mov cx, 0000Fh ;indexed color white 0F
add ax, 2 ;pixelOffset += 2;
mov es:[di], dh ;videomem[pixelOffset] = BLACK;
add ax, 319 ;pixelOffset += 319;
mov es:[di], dh ;videomem[pixelOffset] = BLACK;
add ax, 1 ;pixelOffset += 1;
mov es:[di], dl ;videomem[pixelOffset] = LIGHT_GRAY;
add ax, 1 ;pixelOffset += 1;
mov es:[di], dh ;videomem[pixelOffset] = BLACK;
add ax, 317 ;pixelOffset += 317;
mov es:[di], dh ;videomem[pixelOffset] = BLACK;
add ax, 1 ;pixelOffset += 1;
mov es:[di], dl ;videomem[pixelOffset] = LIGHT_GRAY;
add ax, 1 ;pixelOffset += 1;
mov es:[di], cx ;videomem[pixelOffset] = WHITE;
add ax, 1 ;pixelOffset += 1;
mov es:[di], dl ;videomem[pixelOffset] = LIGHT_GRAY;
add ax, 1 ;pixelOffset += 1;
mov es:[di], dh ;videomem[pixelOffset] = BLACK;
add ax, 317 ;pixelOffset += 317;
mov es:[di], dh ;videomem[pixelOffset] = BLACK;
add ax, 1 ;pixelOffset += 1;
mov es:[di], dl ;videomem[pixelOffset] = LIGHT_GRAY;
add ax, 1 ;pixelOffset += 1;
mov es:[di], dh ;videomem[pixelOffset] = BLACK;
add ax, 319 ;pixelOffset += 319;
mov es:[di], dh ;videomem[pixelOffset] = BLACK;
}
Bạn đang * viết * ** ** trò chơi? Thật tuyệt. –
+1 cho nỗi nhớ game MS-DOS! –
@ John Dibling: ya và tôi sẽ đặt nó lên trên sourceforge khi tôi hoàn thành – PgrAm