2023-11-17 21:54来源:m.sf1369.com作者:宇宇
1.MOV [BX], [SI] 错,双操作数指令两个操作数不能同时为存储器操作数
2.MOV CS, BX 错,不能使用mov指令对cs送值
3.MOV ES, SS 错,段寄存器之间不能直接传送数据
4.MOV [BX], 17 错,两个操作数类型都不确定
5.MOV WORD PTR[BX], 90H 对
6.MOV SS, 13H 错,立即数不能直接送段寄存器
7.MOV DAT[BP][SI], ES:AX 错,ES:AX错误,段跨越前缀只能用在存储器操作数前
8.CMP 17H, CX 错,立即数不能作为目标操作数
9.ADD [BP+SI], 12 错,两个操作数类型都不确定
10.MOV CX, DS:[BX+SI] 对
11.JMP WORD PTR [BX] [SI] 对
12.MOV BX, [SI] 对
13.POP DX 对
14.IN AL, 256 错,端口地址大于255时,必须使用dx进行间接寻址
15.IMUL 15H 错,乘法指令的操作数不能是立即数
code segment
assume cs:code
start:
mov ax,99
a:dec ax
cmp ax,1
jNZ a
mov ah,4ch
int 21h
code ends
end start
if else 条件判断语句,cmp是比较用的
;0~99 P3.0 清0键
ORG 00H
AJMP MAIN
ORG 30H
MAIN:
MOV DPTR,#TAB
MOV TMOD,#06H
MOV TH0,#00H
MOV TL0,#00H
SETB TR0
KEY:
ACALL DISP
JB P3.0,$-2
ACALL DISP
JNB P3.0,$-2
MOV TL0,#0
AJMP KEY
DISP:
MOV A,TL0 ;存放脉冲数
CJNE A,#100,DISP1
MOV TL0,#0
DISP1:
MOV B,#10
DIV AB
MOVC A,@A+DPTR
SETB P2.0 ;脉冲十位
MOV P0,A
ACALL DELAY
CLR P2.0
MOV A,B
MOVC A,@A+DPTR
SETB P2.1 ;脉冲个位
MOV P0,A
ACALL DELAY
CLR P2.1
RET
DELAY:
MOV R7,#75 ;延时3mS子程序
MOV R6,#20
DJNZ R6,$
DJNZ R7,$-4
RET
TAB:
DB 0C0H;0
DB 0F9H;1
DB 0A4H;2
DB 0B0H;3
DB 099H;4
DB 092H;5
DB 082H;6
DB 0F8H;7
DB 080H;8
DB 090H;9
END