1 / 29

二进制到 BCD 的转换

DATA SEGMENT BNUM DW 270FH ASTR DB 5DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE… START PROC FAR BEGIN: … MOV AX,BNUM LEA BX,ASTR MOV DL,0 AGA1:SUB AX,2710H JS NEXT1 INC DL

xaria
Download Presentation

二进制到 BCD 的转换

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DATA SEGMENT BNUM DW 270FH ASTR DB 5DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE… START PROC FAR BEGIN: … MOV AX,BNUM LEA BX,ASTR MOV DL,0 AGA1:SUB AX,2710H JS NEXT1 INC DL JMP AGA1 NEXT1:ADD AX,2710H ADD DL,30H MOV [BX],DL INC BX MOV DL,0 AGA2:SUB AX,03E8H JS NEXT2 INC DL JMP AGA2 NEXT2:ADD AX,03E8H ADD DL,30H MOV [BX],DL INC BX MOV DL,0 AGA3: SUB AX,0064H JS NEXT3 INC DL JMP AGA3 NEXT3:ADD AX,0064H 二进制到BCD的转换

  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地址指针,设串长度 修改地址指针 用‘0’填满串 N 完成否? 取要转换的数 Y 返回 左移1位 N C=1? Y 存入‘1’

  4. 1、加1个项至1个无序列 例3-19 缓冲区中有一无序列,列的长度放在缓冲区的第1个字节,要把内存某单元的1项加入到此列中。 DATA SEGMENT BUF DB 10,’abcdefghij’ DB ? KEY DB ‘$’ DATA ENDS CODE SEGMENT ASSUME CS:COED… START PROC FAR BEGIN: 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 SEGMENT BUF DB 10,’abcdefghij’ KEY DB ‘f’ DATA ENDS CODE SEGMENT ASSUME CS:CODE,… START PROC FAR BEGIN: …. 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. 例: 有一无序列,列的长度放在第1字节。 DATA SEGMENT BUF DB 10,22,-12… MIN DB ? MAX DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,… START PROC FAR BEGIN: … 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 CX AGAIN:MOV AL,[BX] CMP AL,MIN JE NEXT JG A1 MOV MIN,AL JMP NEXT A1: CMP AL,MAX JL NEXT MOV MAX,AL NEXT: INC BX DEC CX JNE AGAIN RET…. 3、找出无序列中的最大值和最小值

  7. DATA SEGMENT A DW 23,34….. DATA ENDS PROG SEGMENT MAIN PROC FAR ASSUME CS:PROG,… START:….. MOV CX,N DEC CX LOOP1: MOV DI,CX MOV BX,0 LOOP2: 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指令在程序中的应用 传送一个字节 开 始 修改地址指针 取源地址 修改计数值 取目标地址 N 计数值=0? 送数据块长度到CL 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: MOV AH,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. 定义字符缓冲区 • 用户自定义缓冲区格式: N1 N2 0DH 整个缓冲区 实际键入字符数 最大键入字符数

  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的方法 • 用4CH功能 MOV AH,4CH INT 21H • 用中断调用20H INT 20H • 转移到0单元 JMP 0 • 用 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 宏体 例

More Related