又是自学的一学期,呵呵。
学到最后也就知道零星半点指令吧,复杂的程序可能还是不怎么会写,熟练当然也不敌C了,但是汇编之于嵌入式,往上走肯定少不了遇到,学好还是必要的!此次仅作入门吧。
今日所学,明日之用。
1、统计正负零的个数
DATAS SEGMENT
ARRAY DB 1,2,-1,0,2,0,-2,4,2,0
POSINUM DB 0
NEGANUM DB 0
ZERONUM DB 0
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
XOR AL,AL
LEA SI,ARRAY
MOV CX,10
CLD
LOOPER:
LODSB
OR AL,AL
JS NEGA
JZ ZERO
INC POSINUM
JMP EXIT
NEGA:
INC NEGANUM
JMP EXIT
ZERO:
INC ZERONUM
EXIT:
LOOP LOOPER
MOV AH,02H
;正数的个数
OR POSINUM,30H
MOV DL,POSINUM
INT 21H
MOV DL,' '
INT 21H
;零的个数
OR ZERONUM,30H
MOV DL,ZERONUM
INT 21H
MOV DL,' '
INT 21H
;负数的个数
OR NEGANUM,30H
MOV DL,NEGANUM
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
2、变量X乘以8
DATAS SEGMENT
X DB 1
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV CL, 3
SHL X,CL
MOV AH,02H
OR X,30H
MOV DL,X
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
3、编程实现任意给定X值,根据x的值确定函数y的值
y和x的函数关系没给,那就随便写个
DATAS SEGMENT
X DB 2
Y DB ?
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
SHL X, 1
MOV AL, X
MOV Y, AL
MOV AH,02H
OR X,30H
MOV DL,X
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
4、两个数的平均值
DATAS SEGMENT
X DB 2
Y DB 8
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV AL, X
ADD Y,AL
SHR Y,1
MOV AH,02H
OR Y,30H
MOV DL,Y
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
5、符号函数
DATAS SEGMENT
X DB 0
Y DB ?
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV AL,X
CMP AL,0
JGE LOOP1
MOV AL,-1
MOV Y,AL
RET;别忘了RET
LOOP1:
JG LOOP2
MOV AL,0
MOV Y,AL
RET
LOOP2:
MOV AL,1
MOV Y,AL
RET
MOV AH,4CH
INT 21H
CODES ENDS
END START