求助汇编代码 !!!!!
学编译原理,要编小编译器,其他工作都完成了,就差生成目标代码了(汇编),汇编以前学过,有点忘了,求助!! main() { int a,b,c; a=3;b=2; c=a+b; if (c==5) c=c-1; else c=c+1; while(c==3) { c=a-b; } } 这样一个小程序,写成汇编要怎么写,不用管源代码写的有没有问题,我故意这样写的。谢谢了,如果有一点注释就更好了!
学编译原理,要编小编译器,其他工作都完成了,就差生成目标代码了(汇编),汇编以前学过,有点忘了,求助!! main() { int a,b,c; a=3;b=2; c=a+b; if (c==5) c=c-1; else c=c+1; while(c==3) { c=a-b; } } 这样一个小程序,写成汇编要怎么写,不用管源代码写的有没有问题,我故意这样写的。谢谢了,如果有一点注释就更好了!
答案:8086汇编语言:
DATA SEGMENT
BUFA DB 3;定义a
BUFB DB 2;定义b
BUFC DB 0;定义c
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA
START:PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AL,BUFA
MOV BL,BUFB
ADD AL,BL
MOV BUFC,AL;c=a+b
CMP BUFC,5
JZ NEXT
INC BUFC;如果c不等于5,则c+1
NEXT:DEC BUFC;如果c=5,则c-1
CMP BUFC,3
JZ NEXT1
JMP EXIT1
NEXT1:MOV AL,BUFA
MOV BL,BUFB
SUB AL,BL
MOV BUFC,AL;如果c=3,则c=a-b
EXIT1: MOV AH,4CH
INT 21H
RET
MAIN ENDP
CODE ENDS
END START
其他:不懂,我出来学学!
上一个:汇编中,INT20是如何令程序退出的?
下一个:请问在汇编语言中 “[a | b]" 是不是等同于 if a......else b 。 谢谢你的回答!!!