【发布时间】:2015-05-12 11:23:54
【问题描述】:
我在*(意大利语)页面上找到了这些代码,其中包含一些描述行:
...用 Intel 语法汇编 Intel x86 的示例程序“Hello world”(使用对操作系统 DOS 的调用)。与 Assembly UNIX GNU 版本不兼容:
MODEL SMALL
STACK 100H
.DATA
HW DB "hello, world", 13, 10, '$'
.CODE
.STARTUP
MOV AX, @data
MOV DS, AX
MOV DX, OFFSET HW
MOV AH, 09H
INT 21H
MOV AX, 4C00H
INT 21H
END
...
...用 C-asm(使用 Intel x86 程序集)编写的代码示例如下:
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
int main()
{
int a;
/* Acquisizione del valore numerico */
printf("Inserisci un valore compreso tra -32768 e 32768: ");
scanf("%d", &a);
/* Visualizzazione del messaggio di risposta */
printf("Il valore corrispondente in binario è: ");
/* Keyword per delimitare le sezioni di codice Assembly */
asm
{
/* Visualizzazione della stringa di bit corrispondente */
MOV BX,WORD PTR a
MOV CX,00Ah
}
/* Etichetta esterna */
Ciclo:
asm
{
/* Estrazione di un bit */
MOV DL,00H
RCL BX,1 /* Il valore del bit viene posto nel flag di carry */
ADC DL,'0' /* Determino il carattere da visualizzare */
MOV AH,02H /* Visualizzazione */
INT 21h
Loop Ciclo
}
return 0;
}
编译这些代码的编译器或命令是什么?我尝试使用 gcc,但我必须修改语法。
【问题讨论】:
-
你不编译汇编代码,你用汇编器汇编它。你有 DOS 环境吗?
-
@Marco Favorito 由于汇编代码是与 MASM 兼容的汇编代码,那么看来您应该使用一些旧的 MS C++。
-
这是用于古董 C 编译器的非常古老的 16 位 MS-DOS 代码。我不确定是哪一个,也许是 Turbo-C?除非你已经精通 C 并且对考古有强烈的兴趣,否则你就是在浪费时间。
-
@Vlad:这段代码可能早于 MS-C++
-
不是第一个用于生成过时的 .com 可执行格式的 asm 代码吗?