8-08汇编语言第4章-2.pptVIP

  • 3
  • 0
  • 约5.3千字
  • 约 24页
  • 2017-12-26 发布于河北
  • 举报
8-08汇编语言第4章-2

上次课回顾 -----与前面所学知识的衔接 第4章 教学要求 1. 掌握基本程序结构――顺序结构、分支结构、循环结构、子程序及其汇编语言程序设计 2. 熟悉常见程序设计问题: 多精度运算、查表(查代码、特定值等) ASCII、BCD及十六进制数据间的代码转换 数据范围判断(0~9、A~Z、a~z) 字母大小写转换;字符串传送、比较等操作 求最小最大值、数据求和、统计字符个数 子程序的寄存器和共享变量传递参数 字符输入(键盘输入)的功能调用 DOS功能调用INT 21H 功能号:AH=01H 入口参数:无 出口参数:AL=字符的ASCII码 功能:获得从键盘输入的一个字符的ASCII码值,并在显示器上显示该字符 调用此功能时,若无键按下,则会一直等待,直到按键后才读取该键值 字符输出(显示一个字符)功能调用 DOS功能调用INT 21H 功能号: AH=02H 入口参数:DL=欲显示字符的ASCII码 出口参数:无 功能:在显示器当前光标位置显示给定的字符,光标右移一个字符位置。如按Ctrl-Break或Ctrl-C则退出 字符串输出(显示一个字符串)功能调用 DOS功能调用INT 21H 功能号:AH=09H 入口参数: DS:DX=欲显示字符串在主存中的首地址 (字符串以ASCII码形式保存,以’$’(24H)结尾, $并不显示) 出口参数:无 功能:在显示器输出指定的字符串 上次课回顾结束 程序综合设计 例:综合设计题 将string开始的L1个字节的二进制数转换成ASCII码放至buffer始存储区(1个字节为2位16进制数,1位16进制数转换成1位ASCII码) 涉及 ASCII码转换 分支设计方法 循环设计方法 子程序设计方法 例:综合题 ---源程序(1) L1 db 2 string db 12h,0A9h buffer db 2*2 dup(?) 例:综合题 ---源程序(2) lea bx,string ; bx←存放二进制数的起始地址指针 lea si,buffer ;si←存放转换成ASCII码的起始地址指针 mov cx,L1 again: mov al,[bx] ;取1个字节需转换的二进制数 call HTOASC ;调16进制数转换成ASCC码子程序 mov [si],al   ;[si]←ASCII码 inc si mov al,[bx]   ;取1个字节需转换的二进制数的高4位 push cx mov cl,4 shr al,cl pop cx call HTOASC ;调16进制数转换成ASCC码子程序 mov [si],al ;[si]←ASCII码 inc si inc bx loop again ;计数循环 hlt 例:综合题 ---源程序(3) ;1位16进制数转换成1位ASCII 码子程序 HTOASC proc and al,0fh cmp al,10 jc htoasc1 ; <10,转htoasc1 add al,37h ; 是A ~ F,加37H ret ; 子程序返回 htoasc1: add al,30h ; 是0 ~ 9,加30H ret ; 子程序返回 计数控制循环例题:求数组元素的最大值 ;数据段主体部分 buffer db -1,0,2,3,8,9,10,88h,-3,45h ;这是一个有符号字节元素组成的数组 count equ $-buffer ;符号“$”表示当前偏移地址值 max db ? ;存放最大值 ;代码段主体部分 例题改进:求数组元素的最大值和最小值,数组元素的第一个数据表示元素个数 ;数据段主体部分 array dw 10 ;假设一个数组,其中第一个数据10表示元素个数 dw -3,0,20,900,587,-632,777,234,-34,-56 ;这是一个有符号字量元素组成的数组 maxay dw ? ;存放最大值 minay dw ? ;存放最小值 例题改进 代码段 ;代码段主体部分 lea si,array mov cx,[si] ;取得元素个数 dec cx ;减1后是循环次数 add si

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档