二进制到 bcd 的转换
Post on 23-Jan-2016
215 Views
Preview:
DESCRIPTION
TRANSCRIPT
1
二进制到 BCD 的转换DATA SEGMENTBNUM DW 270FHASTR DB 5DUP (?)DATA ENDSCODE SEGMENT ASSUME CS : CODE…START PROC FARBEGIN: … MOV AX , BNUM LEA BX , ASTR MOV DL , 0AGA1 : SUB AX , 2710H JS NEXT1 INC DL JMP AGA1NEXT1 : ADD AX , 2710H ADD DL , 30H
MOV [BX] , DL INC BX MOV DL , 0AGA2 : SUB AX , 03E8H JS NEXT2 INC DL JMP AGA2NEXT2 : ADD AX , 03E8H ADD DL , 30H MOV [BX] , DL INC BX MOV DL , 0AGA3 : SUB AX , 0064H JS NEXT3 INC DL JMP AGA3NEXT3 : ADD AX , 0064H
2
接上 ADD DL , 30H
MOV [BX] , DL
INC BX
MOV DL , 0
AGA4 : SUB AX , 000AH
JS NEXT4
INC DL
JMP AGA4
NEXT4 : ADD AX , 000AH
ADD DL , 30H
MOV [BX] , DL
INC BX
ADD AL , 30H
MOV [BX] , DL
RET
START ENDP
CODE ENDS
END BEGIN
3
从二进制到 ASCII 串的转换设串 1 地址指针,设串长度
修改地址指针
N
Y
取要转换的数
C=1 ?
左移 1 位 返回
存入‘ 1’
用‘ 0’ 填满串 完成否?
Y
N
4
有关列和表的程序设计1 、加 1 个项至 1 个无序列例 3-19 缓冲区中有一无序列,列的长度放
在缓冲区的第 1 个字节,要把内存某单元的 1 项加入到此列中。
DATA SEGMENTBUF DB 10 ’, abcdefghij’ DB ?KEY DB ‘$’DATA ENDSCODE SEGMENT ASSUME CS : COED…START PROC FARBEGIN: PUSH DS…… LEA DI , BUF MOV CH , 0
MOV CL , [DI]
INC DI
MOV AL , KEY
REPNZ SCASB
JE DONA
MOV [DI] , AL
INC BUF
DONE : RET
START ENDP
CODE ENDS
END BEGIN
5
从一个无序列中删去一个元素例 3-20在内存缓冲区中有一个无序列,列
的长度存放在第 1 个字节,另有一单元存放要删去的元素变量,查找此无序列,若包含要删去的元素则把它删去,并对列做相应的调整。
DATA SEGMENTBUF DB 10 ’, abcdefghij’KEY DB ‘f’DATA ENDSCODE SEGMENT ASSUME CS : CODE,…START PROC FARBEGIN: …. LEA DI , BUF MOV CH , 0 MOV CL , [DI]
INC DI
MOV AL , KEY
REPNE SCASB
JNE DONE
DEC BUF
SCHG SI , DI
REP MOVSB
DONE : RET
START ENDP
CODE ENDS
END BEGIN
6
3、找出无序列中的最大值和最小值例:有一无序列,列的长度放在第 1 字
节。DATA SEGMENTBUF DB 10 , 22 , -12…MIN DB ?MAX DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,…START PROC FARBEGIN: … LEA BX , BUF MOV CH , 0 MOV CL , [BX] INC BX MOV AL , [BX]
DEC CX MOV MIN , AL MOV MAX , AL INC BX DEC CXAGAIN : MOV AL , [BX] CMP AL , MIN JE NEXT JG A1 MOV MIN , AL JMP NEXTA1 : CMP AL , MAX JL NEXT MOV MAX , ALNEXT : INC BX DEC CX JNE AGAIN RET….
7
阅读程序DATA SEGMENTA DW 23,34…..DATA ENDSPROG SEGMENTMAIN PROC FAR ASSUME CS:PROG …,START …: .. MOV CX , N DEC CXLOOP1 : MOV DI , CX MOV BX , 0LOOP2 : MOV AX , A[BX] CMP AX , A[BX+2] JGE COTI XCHG AX , A[BX+2] MOV A[BX] , AX
COTI : ADD BX , 2
LOOP LOOP2
MOV CX , DI
LOOP LOOP1
RET
MAIN ENDP
PROG ENDS
END START
8
串操作指令流程
取源串地址
取目标串地址
设串长度
传送一个字节或字
修改地址指针
修改串长度值
传送完否?
9
串比较指令例测试 200 个字节数据是否传送正确:
LEA SI , MEM1
LEA DI , MEM2
MOV CX , 200
CLD
REPE CMPSB
TEST CX , 00FFH
JZ STOP
DEC SI
MOV AL ,[SI]
MOV BX , SI
STOP : HLT
10
LEA 指令在程序中的应用
开 始
取源地址
取目标地址
送数据块长度到CL
传送一个字节
修改地址指针
修改计数值
计数值 =0 ?
结 束
N
Y
11
LEA 指令在程序中的应用 LEA SI , MEM1
LEA DI , MEM2
MOV CL , 50
NEXT : MOV AL , [SI]
MOV [DI] , AL
INC SI
INC DI
DEC CL
JNZ NEXT
HLT
12
§4.5.4 DOS 及 BIOS 功能调用
DOS 功能调用 高级调用,操作系统提供
BIOS 功能调用 低级调用
1. DOS 模块和 BIOS 的关系
BIOS--- 外部设备管理软件,固化在主板的 ROM 中。
DOS---- 操作系统。包含 IBMBIO.COM (输入输出设备处理程序), IBMDOS.COM( 文件管理及处理程序 ) ,
COMMAND.COM (命令处理程序)
13
2.中断调用及中断服务子程序返回3.DOS 功能调用
包含多个子功能的功能包,用软中断指令INT 21H 调用,中断类型码固定为21H ;
各子功能采用功能号来区分。
附录 C
14
DOS 功能调用设备管理目录目录管理管理文件管理文件管理其它其它
调用格式: MOV AH ,功能号 ; < 置相应参数 >
INT 21H
15
1 )返回 DOS
调用方法:
MOV AH , 4CH ;功能号 4CH
INT 21H
2 )键盘输入并显示 MOV AH , 1
INT 21H ;从键盘输入一个字符保存在 AL 中,并在屏幕上显示。
16
单字符输入例GET_KEY: MOVAH,1 INT 21H CMP AL,’Y’ JZ YES CMP AL,’N’ JZ NO JNZ GET_KEY YES: ┇ NO: ┇
交互式应 答程序
17
3 )键盘输入但不显示输入字符 MOV AH , 08H
INT 21H ;从键盘输入一字符,保存在 AL 中,但
不显示,用来设置口令。
4 )显示 DL中的字符MOV DL ’, A’
MOV AH , 02H
INT 21H
18
单字符显示输出例 MOV AH , 02 MOV DL , 41H INT 21H
执行结果:屏幕显示 A
19
从键盘输入字符串
AH 功能号 OAH
DS : DX 字符串在内存中的存放地址
INT 21H P169 例
20
定义字符缓冲区 用户自定义缓冲区格式:
0DHN1 N2
整个缓冲区
最大键入字符数
实际键入字符数
21
输入字符串程序段 DAT1 DB 20 ,?, 20 DUP (?)
LEA DX , DAT1
MOV AH , 0AH
INT 21H
在数据段中定义
22
输入缓冲区
14H ?
20 个字节
定义后的输入缓冲区初始状态:
23
字符串输出显示
AH 功能号 O9H
DS : DX 待输出字符串的偏移地址
INT 21H
被显示的字符串必须以‘ $’ 结束 , 且所显示的内容不应出现非可见的 ASCII 码
24
字符串输出显示例DATA SEGMENT
MESS1 DB ‘Input String:’ 0DH , 0AH,’$’
DATA ENDS
CODE SEGMENT
┇MOV AH , 09
MOV DX , OFFSET MESS1
INT 21H
┇
25
结束用户程序返回 DOS的方法
1 用 4CH 功能 MOV AH , 4CH
INT 21H
2 用中断调用 20H
INT 20H
3 转移到 0 单元 JMP 0
4 用 00H 功能 MOV AH , 00
INT 21H
26
4.BIOS功能调用 1 )设置显示方式 P171 2 )设置光标大小 MOV AH , 1 ;功能号为 1
MOV CH , 0 ;光标顶值( 0---11 ) MOV CL , 12 ;光标底值( 1—12 ) INT 10H 3 )设置光标位置 P172
27
在计算机上进行程序设计过程
D:\masm>EDIT 输入源程序D:\masm>MASM 汇编D:\masm>LINK 链接D:\masm>TD 调试
28
作业:4.1----4.29
29
七、宏命令伪指令 宏命令 -------- 源程序中由汇编程序识别的具有 独立功能的一段程序代码 格式: 宏命令名 MACRO < 形式参数 >
┇
┇
ENDM 宏体
例
top related