谁给我写一个最简单的汇编语言程序

2024-12-26 11:44:31
推荐回答(3个)
回答1:

............上来就是LCD人家看得懂么......

ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV P0,#00H
MOV P1,#00H
MOV P2,#00H
MOV P3,#00H
ACALL DEL
MOV P0,#FFH
MOV P1,#FFH
MOV P2,#FFH
MOV P3,#FFH
ACALL DEL
AJMP MAIN
ORG 200H
DEL: MOV R5,#04H
DEL1:MOV R6,#0FFH
DEL2:MOV R7,#0FFH
DEL3:DJNZ R7,DEL3
DJNZ R6,DEL2
DJNZ R5,DEL1
ret
end
给新手的新手注释 :H表示地址 mov 是赋值的含义 R1,R2.....是寄存器,main相当于C语言中主函数,是程 序的入口 0H~30H 一般用于存放中断函数无条件跳转语句(即为AJMP,SJMP,LJMP, 3者无条件跳转的地址量有限,LJMP最大(64Kbyte空间内语句可跳转),SJMP最小(-128H~+127H )) ,AJMP为2KByte无条件跳转

DEL 在该程序中表示延时函数,首先对寄存器R5,R6,R7赋值,R5*R6*R7*机器周期为延时时间 【 机器周期:12MHZ晶振=1us 6MHZ=2us】 执行完DEL中的MOV后 执行的是DJNZ命令,相当于C中i - -,不同的是若 i - -!=0,则跳转到 [DJNZ R...,()] 中()所代表的自定义函数{PS:DEL~DEL3均是是自定义函数,在延时函数里,为了达到延时值,一般都象我所写的那样 DEL: DJNZ R...,DEL 这样,i - -后又跳回来...,注意,在这里DEL,DEL1,...DEL3合起来叫做延时函数}

END表程序结束符(必须有)ACALL是表示调用子程序(这里,子函数是延时函数DEL)。。。。。与RET配套RET表返回调用子程序处

另外,该函数P0的点亮反映了共阴极合共阳极的不同,共阳极是MCU(即为单片机)接上若干发光二极管,并接电源VCC=+5V,如此一来,共阳极 熄灭整个一组端口FFH,点亮整个一组端口为00H 共阴极熄灭与点亮与共阳极恰起相反,因为共阴极MCU接上发光二极管后(从电路图看发光二极管上那一小竖道要面向GND而不是像共阳极那样面向MCU,当然在实际上也要注意接法的正负)接GND

回答2:

;在屏幕上输出“Hello World!”,最简代码如下:
C_S SEGMENT
ASSUME CS: C_S, DS: C_S
S_T:
MOV AX, C_S
MOV DS, AX
LEA DX, P_S
MOV AH, 9
INT 21H
MOV AH, 4CH
INT 21H
P_S DB 'Hello World!', 36
C_S ENDS
END S_T

回答3:

在屏幕上输出“Hello World!”,代码如下:
DATAS SEGMENT
STRING DB 13,10,'Hello World!',13,10,'$'
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA DX,STRING
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START