我在维基百科(意大利语)页面上找到了关于"汇编"有一些描述行:
...示例程序" Hello world"在汇编Intel x86中使用Intel语法(使用对操作系统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但我必须修改语法。
答案 0 :(得分:2)
这两个片段都是MS-DOS程序集。
第一个片段可以使用FASM构建。 FASM可以针对MS-DOS。
对于第二个,你需要一个非常旧的Microsoft C编译器,比如Quick C 2.x或MSC 6.x.最新版本的Microsoft C能够发出Visual C ++ 1.54 IIRC附带的16位代码。所有这些编译器都已经停产了。
要执行其中任何一个,您需要一个MS-DOS机器或DOSBox等模拟器。 Windows命令行不会这样做。