概述
【1】、回车换行:
利用宏:
CRLF MACRO
MOV AH,02H
MOV DL,0DH
INT 21H
MOV AH,02H
MOV DL,0AH
INT 21H
ENDM
技巧:用表
CRLF DB 0AH,0DH,'$'
调用的话就直接使用:
MOV AH,9
LEA DX,CRLF
INT 21H
【2】、键盘识别的ASCⅡ码转化为数字:
与40H比较,小于40H,减两次,大于40H减一次
MOV AH,1
INT 21H
CMP AL,40H
JL L2
;JG L1
;JG L2
;L1: SUB AL,07H
SUB AL,07H
L2: SUB AL,30H
【3】、AX是读得的数字,NUM是一个字,存放四个BCD码:
NUM左移四位,加上读得数字存入表
PUSH AX
MOV AX,NUM
MOV BX,16
MUL BX
POP BX
ADC AL,BL ;这里用ADC,ADD没有影响,*16相当于左移四位,不影响进位
MOV NUM,AX
【4】、把NUM中的数字按二进制显示:
循环16次,DL赋31H,对BX左移一位,判断高位移入的进位,用JC跳转-1与否
MOV CX,16
MOV BX,NUM
L4: MOV DL,31H
SAL BX,1
JC L3
DEC DL
L3: MOV AH,2
INT 21H
LOOP L4
【5】、逻辑尺:
设有数组,X=[x1…x6] Y=[y1…y6]
试计算:Z1=X1+Y1、Z2=X2+Y2、Z3=X3-Y3、Z4=X4-Y4、Z5=X5-Y5、Z6=X6+Y6
ST: MOV SI,0
MOV CX,6
MOV BX,11000100B (逻辑尺)
L0: MOV AX,[X+SI]
SHL BX,1
JNC L1
ADD AX,[SI+Y]
JMP L2
L1: SUB AX,[SI+Y]
L2: MOV [SI+Z],AX
ADD SI,2
LOOP L0
HLT
ASCⅡ,BCD,进制转换等都和移位程序有关
原题:
【6】基础程序:从键盘输入一个十六进制数并转换为数值
AGAIN: MOV AH,1
INT 21H
CMP AL,'0'
JB AGAIN
CMP AL,'9'
JBE BT0
CMP AL,'A'
JB AGAIN
CMP AL,'F' ;只判断了大写字母
JBE BT1
JMP AGAIN
BT0: SUB AL,30H
JMP OK
BT1: SUB AL,37H
OK: HLT
【7】、该程序没用过,但感觉很神奇
试按输入的ASCⅡ字符命令(A-F),转向相应的处理程序。命令字符的处理程序入口地址顺序存放于表TAB中,设查表之前输入的命令字符在AL中。
START: LEA BX,TAB
SUB AL,41H
SHL AL,1 ;(短转移*2)
MOV AH,0
ADD BX,AX
JMP BX
TAB: JMP A1
JMP B1
...
JMP F1
最后
以上就是平淡时光为你收集整理的【微机编程】汇编的一些优质算法的全部内容,希望文章能够帮你解决【微机编程】汇编的一些优质算法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复