我是靠谱客的博主 平淡时光,最近开发中收集的这篇文章主要介绍【微机编程】汇编的一些优质算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

【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

最后

以上就是平淡时光为你收集整理的【微机编程】汇编的一些优质算法的全部内容,希望文章能够帮你解决【微机编程】汇编的一些优质算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部