当前位置:文档之家› 汇编语言程序设计(四子程序)

汇编语言程序设计(四子程序)

高6位
Bin
Dec Hex
47
2F
48
30
49
31
Hale Waihona Puke 503251
33
52
34
53
35
54
36
55
37
56
38
57
39
58
3A
59
3B
60
3C
61
3D
62
3E
63
3F
64
40
65
41
66
42
67
43
68
44
69
45
70
46
缩写/字符 / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F
1位十六进制(对应4位二进制)转换为ASCII码原理如下: 将获得的16进制数与9H比较:
若<=9H,则该数加上30H,即为该数的ASCII码。 若>9H,则先加上30H,再加上07H,才为该数的ASCII 码。
实验四 子程序及功能调用实验
15 12
8
4
0
高四位 次高 次低 低四位 AX
次高 次低 低四位 高四位 AX 循环左移4位 ROL AX,CL
mov ds,ax mov ax,wordtemp call ALdisp mov ax,4c00h ;设置功能调用 AH=4C 带返回码结束 int 21h
ALdisp proc
;实现al内容显示的子程序
push ax 压栈保护数据。
;过程中使用了AX、BX、CX和DX,寄存器内容
a1: mov cl,4 rol ax,cl push ax mov dl,al and dl,0fh or dl,30h cmp dl,39h jbe aldisp1 add dl,7
(2)相应寄存器内容的保护。由于CPU寄存器数量有限,子程 序要用到的一些寄存器常在调用程序中也被用到,为了防止破 坏调用程序中寄存器的内容,需在子程序入口处将所用到的寄 存器内容压入堆栈保存;
(3)子程序还可以调用别的子程序,即子程序嵌套。
与子程序调用有关的CPU指令有:CALL和RET;伪指令有: PROC和ENDP。
实验四 子程序及功能调用实验
6.实验报告: ① 同学要对本次实验课的内容加以总结,并写出自己对本次实验的体会和
收获。 ②实验报告格式: 实验名称 实验材料 实验步骤 实验总结
实验四 子程序及功能调用实验
实验原理:
AX中16位二进制数对应4位十六进制数,先转换最高4位成 ASCII码并显示(循环左移4位,使最高4位移到AL的低四位, 使AL高4位为0,等待处理,注意事先保存原AX值,防止丢失) ,然后转换次高四位并显示,以此类推。最后显示“H”(表示 16进制)
; dl内的数小于等于39h转移 ;是0Ah~0Fh,还要加上7 ;显示,ah=02表示:将dl中的内容以字符的形式输出到屏幕 ;系统功能调用,至于是那种功能调用,取决于ah里的内容 ;弹出栈,此时ax的内容为循环左移4位原数 ;计数器减1 (左移次数) ;结果不为0转移,进行下一个4位转换
;显示字符“H”
如:2.asm ⑵运行masm编译器进入dos,调入所编写的汇编程序,生成2.obj,然后用
link.exe连接2.obj文件,生成可执行文件2.exe. ⑶用DEBUG调用2.exe文件,格式为DEBUG 2.EXE ⑷用D命令观察内存单元值 ⑸用U命令观察源程序 ⑹用G命令运行程序 ⑺用T命令单步执行程序 ⑻用R命令观察或修改寄存器内的值
汇编语言程序设计实验
实验四 子程序及功能调用实验
子程序是程序的一部分,是完成特定功能的程序段,它能 够在程序的任何地方被调用。在使用子程序时应注意:
(1)参数的传递。子程序调用时,经常需要将一些参数传给子 程序,而子程序也常常需要在运行后将结果和状态等信息回送 给调用程序。这种子程序和调用程序之间的信息传送,就是参 数传递。参数的传递可通过寄存器、变量、地址表、堆栈等方 式进行。
3.实验用设备仪器及材料:
硬件:计算机
软件:DEBUG调试软件。
4.实验要求: ①能在DEBUG提示符下,编写简单的汇编程序。 ②熟练掌握修改寄存器、存储单元的方法,理解段地址、偏移量的表达方式。
实验四 子程序及功能调用实验
5.实验步骤: ⑴用文件编辑器编写汇编语言程序(如:记事本),并以asm为后缀命名,
aldisp1:mov ah,2 int 21h pop ax dec bx jnz a1 mov dl,'H‘ mov ah,2 int 21h pop dx pop cx pop bx pop ax ret
ALdisp endp code ends
end start
;设置左移位数 ;循环左移 ;暂存ax里的数据,DOS功能会改变AL内容 ;转换al的高4位 ;将dl中的高4位清零 ;dl高4位变成3
;过程返回
实验四 子程序及功能调用实验
实验参考程序2(变量传递参数): data segment
wordtemp dw 2df4h data ends code segment
实验四 子程序及功能调用实验
实验参考程序1(寄存器传递参数): data segment
wordtemp dw 105Eh ;也可用二进制表示 0001 0000 0101 1110b data ends code segment
assume cs:code,ds:data start: mov ax,data
DX DH 次高 次低 低四位 高四位 DL
保存AX中的数
屏蔽DL高4位 AND DL,0FH低四位 高四位 DL
判DL低4位
0 高四位 DL DL+30
3
高四位 DL>39H,DL+07H
3
高四位 DL≤39H
DL内的数送显示
显示功能调用AH=02H,DL=数,INT 21H
低10 位 ASCII码对照表:
实验四 子程序及功能调用实验
1.实验目的: ①掌握汇编语言子程序及功能调用结构、指令及调用方法。 ②学习二进制数转换为十六进制数并显示的方法。
2.实验内容: ①掌握子程序的编程格式: 〈子程序名〉 PROC NEAR/FAR(子程序属性) ┆ ┆ RET 〈子程序名〉 ENDP。 ②编写一个子程序,把一个16位二进制数用十六进制形式在屏幕上显示出来。 分别运用如下2种参数传递方法,并用一个主程序验证它。 ③采用AX寄存器传递这个16位二进制数。 。 ④采用wordTEMP变量传递这个16位二进制数。
相关主题