ps:引用1楼的
一 、int21h 的一号子命令输入 十号子命令输出 因为此命令对应的是ascii码 利用ascii码相加减 0~30h A~41h 故加11h :
STSG SEGMENT
DW 32DUP()
STSG ENDS
DATA SEGMENT
DB
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA,SS:STSG
MOV AX,DATA
MOV DS,AX
MOV AH,0
INT 16H
;其实这里可以加个判断范围的代码
ADD AL,11H
MOV AH,2
MOV DL,AL
INT 21H
MOV AX,4C00H
INT 21H
MIAN ENDP
CODE ENDS
END MAIN
二用跳转指令
STSG SEGMENT
DW 32DUP()
STSG ENDS
DATA SEGMENT
CHAR DB 'A','B','C','D','E'
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA,SS:STSG
MOV AX,DATA
MOV DS,AX
MOV AH,0
INT 16H
;其实这里可以加个判断范围的代码
MOV BX,30H
LEA SI,CHAR
MOV CX,5;循环5次
L:CMP AL,BX
JZ A
INC BX
INC SI
LOOP L
A:MOV AH,2
MOV DL,SI
INT 21H
MOV AX,4C00H
INT 21H
MIAN ENDP
CODE ENDS
END MAIN
DATAS SEGMENT
str1 db 255 dup()
DATAS ENDS
STACKS SEGMENT
db 200 dup()
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV SI,OFFSET STR1
MOV CX,100H ;循环次数
AGAIN:
MOV AH,01H
INT 21H
CMP AL,24H ;回车的时候结束
JZ OUT1
MOV [SI],AL ;保持输入的字符串
INC SI
LOOP AGAIN
OUT1:
MOV [SI],AL ;把回车作为结束符号
MOV SI,OFFSET STR1
MOV CX,100H
L1:
MOV BL,[SI]
CMP BL,24H ;检查是否到结束了
JZ OUT2 ;结束就退出
CALL XCHGSTR
INC SI
LOOP L1
OUT2:
MOV CX,100H
MOV SI,OFFSET STR1
L2: MOV AL,[SI]
CMP AL,24H
JZ OUT3
MOV DL,AL
MOV AH,02H
INT 21H
INC SI
LOOP L2
OUT3:
MOV AH,4CH
INT 21H
XCHGSTR:
MOV AL,[SI] ;取出数据
OR AL,20H ;让其第5位为1
MOV [SI],AL ;将其保存
RET
CODES ENDS
END START
这个程序是将不小于256个字母转换的程序,如果你只要10个,你可以在输入10个之后用$来结束就可以了
AL=34H BL=78H
ADD AL ,BL
是指AL+BL->AL(和存在AL)
以后AL=0ACH
DAA是转换压缩BCD码的意思
解释一下:
BCD码是把十六进制当十进制用
如34H 是十进制52 用BCD码表示是0101 0010,前四位表示五,后四位表示二
这样可能回产生进位,
ADC AL,BH
是AL+BH+CF(进位标志)->AL
ORG 0 ;程序入口
START: MOV DPTR,#TABLE ;将数据表首地址送数据指针
LOOP: CLR A ;累加器清0
MOVC A,@A+DPTR ;取表中数据送累加器
CJNE A,#01H,LOOP1 ;如果累加器不等1转LOOP1
JMP START ;转START
LOOP1: MOV P1,A ;累加器值送P1驱动LED显示
MOV R3,#20 ;延时参数20送R3,延时2010毫秒
LCALL DELAY ;调用延时子程序
INC DPTR ;数据指针加1
JMP LOOP ;转LOOP
DELAY: MOV R4,#20 ;外层循环20次
D1: MOV R5,#248 ;内层循环248次
DJNZ R5,$ ;内层循环
DJNZ R4,D1 ;外层循环
DJNZ R3,DELAY ;最外层循环
RET ;子程序延时10毫秒
TABLE: DB 0FEH,0FDH,0FBH,0F7H ;
DB 0EFH,0DFH,0BFH,07FH
DB 0FEH,0FDH,0FBH,0F7H
DB 0EFH,0DFH,0BFH,07FH
DB 07FH,0BFH,0DFH,0EFH
DB 0F7H,0FBH,0FDH,0FEH
DB 07FH,0BFH,0DFH,0EFH
DB 0F7H,0FBH,0FDH,0FEH
DB 00H, 0FFH,00H, 0FFH
DB 01H
END
以上就是关于我初学汇编语言,有个小程序,希望大家帮帮忙!!我在线等!!!全部的内容,包括:我初学汇编语言,有个小程序,希望大家帮帮忙!!我在线等!!!、请教:用汇编语言写一个小程序、请教汇编语言小程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)