本文目录
汇编语言程序该怎么写
code segment assume cs:code org 100hstart:jmp beginx dw 11,12,13,14,15,16,17,18,19,20y dw 1,2,-3,-4,5,-6,-7,-8,9,10sign dw 1,1,0,0,1,0,0,0,1,1; 1表示加, 0 表示减z dw 10 dup(?)begin:push cs pop ds push cs pop es mov cx,10 cld lea si,x lea di,z@main: mov ax, cmp word ptr,0 je @main1 add ax, mov ,ax jmp @main2@main1: sub ax, mov ,ax@main2: inc si inc si inc di inc di loop @main lea si,z mov cx,10 cld@main3: lodsw call dispaxs loop @main3 mov ah,4ch int 21h;========================================= ; 将要显示的有符号数置于 ax 中 DISPAXS PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI PUSH BP PUSH DS PUSH ES PUSHF PUSH CS POP DS PUSH CS POP ES MOV CX,6 LEA DI,DISPAXSS @DISPAXS: MOV BYTE PTR ,32 INC DI LOOP @DISPAXS PUSH AX MOV DL,32 MOV AH,2 INT 21H POP AX MOV BYTE PTR NZS,0 MOV BYTE PTR SIGNS,0 CMP AX,0 JGE @DISPAXS0 MOV BYTE PTR SIGNS,1 NEG AX @DISPAXS0: PUSH AX LEA SI,DIVARRS LEA DI,DISPAXSS INC DI MOV CX,5 @DISPAXS1: POP AX MOV DX,0 MOV BX, DIV BX PUSH DX CMP AL,0 JNE @DISPAXS2 CMP BYTE PTR NZS,1 JE @DISPAXS2 CMP CX,1 JE @DISPAXS2 MOV DL,20H JMP @DISPAXS3 @DISPAXS2: ADD AL,30H MOV DL,AL MOV BYTE PTR NZS,1 @DISPAXS3: MOV BYTE PTR,DL INC SI INC SI INC DI LOOP @DISPAXS1 POP DX CMP BYTE PTR SIGNS,1 JNE @DISPAXS6 LEA SI,DISPAXSS ADD SI,5 @DISPAXS4: CMP BYTE PTR ,32 JE @DISPAXS5 DEC SI JMP @DISPAXS4 @DISPAXS5: MOV BYTE PTR ,’-’ @DISPAXS6: LEA DX,DISPAXSS MOV AH,9 INT 21H POPF POP ES POP DS POP BP POP DI POP SI POP DX POP CX POP BX POP AX RET DIVARRS DW 10000,1000,100,10,1 NZS DB 0 SIGNS DB 0 DISPAXSS DB 32,32,32,32,32,32,’$’ DISPAXS ENDP;================================== code ends end start
怎么使用visual studio 2010编写汇编语言程序
使用内联汇编写 ,它的格式有两种,一种是__asm 直接接汇编指令语句,比如,__asm xor eax, eax //清零eax另一种是加上花括号,类似于一个函数,比如__asm { mov eax, 1 ;1到eax mov ebx, 2 ;2到ebx add eax, ebx ;eax 和ebx相加}使用内联汇编有个好处可以直接使用C/C++中的变量 ,比如int a = 2;__asm mov a, 2 //可以使用变量,只有一条另外使用内联汇编最需要注意的是数组。比如 int a = {1,2} ; 不可以直接 __asm{mov a, 1mov a, 2}这样是错误的, 需要 mov a,2 为什么是4呢?因为内联汇编转换后是数组a的地址偏移,而不是序号。vc中的内联汇编 简单的很, 要是在linux中使用内联汇编,费了劲了。。没事欢迎到 百度 0x30 贴吧 分享一下C/C++的心得,或者加入百度知道 0x30 团队,帮助别人的时候,自己 也可以学到东西 。。