
汇编语言学习
文章平均质量分 66
汇编语言实验
HUZ_小Z
HZU
展开
-
用机器指令和汇编指令编程1
原创 2024-12-18 22:48:53 · 114 阅读 · 0 评论 -
编写、调试具有多个段的程序
end start 指明程序将标号 start 作为程序入口,代码段部分分为以下功能:定义空栈,设置寄存器 DS 的值,两次入栈,两次出栈。设程序加载后,code段的短地址为x,则data段的短地址为__x+3__,stack段的短地址为__x+4__。如果段中的数据占 N 个字节,则程序加载后,该段实际占有的空间为 N/16*16+(N%16!设程序加载后,code 段的段地址为 X,则 data 段的段地址为。CPU 执行程序,程序返回前, data 段中的数据为。,stack 段的段地址为。原创 2024-12-25 16:19:33 · 796 阅读 · 0 评论 -
用机器指令和汇编指编程2
实验内容:(1)使用debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。源程序如下:接着我们单步执行结果如下所示以上就是实验的全部结果,分析实验结果我们对实验内容进行填空,如下:mov ax,ffffmov ds,axmov ax,2200mov ss,axmov sp,0100mov ax,[0] ;ax=C0EAHadd ax,[2] ;ax=C0FCHmov bx,[4] ;bx=30F0Hadd bx,[6] ;bx=6021Hpush ax ;sp=00FEH原创 2024-12-20 16:35:27 · 203 阅读 · 0 评论 -
[bx]和loop指令的联合使用
编程,向内存0:200~0:23F依次传送数据0~63(3FH),程序中只能使用9条指,9条指令中包括“mov ax,4c00h”和"int 21h"下面的程序的功能是将“mov ax, 4c00h”之前的指令复制到内存0:200处,补全程序,上机调试,跟踪运行结果。原创 2024-12-24 15:55:37 · 215 阅读 · 0 评论 -
不同寻址方式的灵活应用
begin:mov ds,axmov ss,axmov sp,16mov bx,0mov cx,4p:push cxmov si,0mov cx,4k:inc siloop kadd bx,16;bx+16pop cxloop pint 21h代码如下:begin:mov ds,axmov ss,axmov sp,16mov bx,0mov cx,4mov si,3p:push cxmov cx,4inc siloop kmov si,3。原创 2024-12-27 16:07:47 · 708 阅读 · 0 评论 -
汇编语言程序的调试与运行
(3)PSP的头两个字节是CD 20,用Debug加载t1.exe,查看PSP的内容。原创 2024-12-23 20:23:47 · 306 阅读 · 0 评论 -
编写0号中断的处理程序
assumecs:codecodesegmentstartmovax,csmovds,axmovsi,offsetdomovax,0moves,axmovdi,200hmovcx,offsetdoendoffsetdo;安装中断例程cldrep movsbmovmov;设置中断向量表movdx,0ffffhmovbx,1;测试一下divbxmovax,4c00hint 21hdbdostart:movax,0mov。原创 2025-01-23 21:53:55 · 561 阅读 · 0 评论 -
转移指令的原理
课本之前说过,jmp指令对应的机器码前两位表示的是向前还是向后,后两句代表的是位移(位移=标号处的偏移地址-jmp后第一个字节的偏移地址),所以ax得到的不是。jmp short s1这句代码,而是得到的一个四位(两个字节)的数据,表示的意义是 “向前"的”[s1]-[s2]"jmp short si;接下来 , (ip) = (ip) + len(EB F6) = (ip) + 8 = 10。这个的意思是将s2处的第一个字节开始的代码(直接理解为那一行的代码)移动到s处。原创 2025-01-07 14:46:39 · 862 阅读 · 0 评论 -
编写、应用中断例程
(2)编写并安装int 7ch中断例程,功能为完成loop指令的功能。定义一个偏移地址表,存储各字符串的偏移地址。定义一个行数表,用于打印相应行数的字符串。将偏移地址表的起始地址加载到寄存器bx。设置功能号为9,用于在屏幕上显示字符串。将行数表的起始地址加载到寄存器si。增加bx的值,指向下一个字符串地址。设置功能号为2,用于设置光标位置。调用DOS中断21h以显示字符串。定义字符串s1,并以逗号结尾。定义字符串s2,并以逗号结尾。定义字符串s3,并以逗号结尾。定义字符串s4,并以逗号结尾。原创 2025-01-24 22:46:12 · 846 阅读 · 0 评论 -
编写子程序
(1)要得到字符串”12666“,就是要得到一列表示该字符串的ASCII码:31H、32H、36H、36H、36H。上看到这串字符,它在机器中应以ASCII码的形式存储为:31H、32H、36H、36H、36H(字符。通过上面的分析可以看到,在概念世界中,有一个抽象的数据12666,它表示了一个数值的大小。(1)子程序的入口参数是屏幕上的行号和列号,注意在子程序内部要将它们转化为显存中的地址,现在,我们面临的问题就是,应用举例:编程,将数据12666以十进制的形式在屏幕的8行3列,用绿色显示出来。原创 2025-01-23 21:49:05 · 1007 阅读 · 0 评论 -
访问CMOS RAM
int 21h 显示字符串,要求以$结尾。将压缩BCD码分为两个BCD码。置光标于10行40列。原创 2025-01-31 22:28:03 · 826 阅读 · 0 评论 -
寻址方式在结构化数据访问中的应用
由杨辉三角算出相加的次数,从第三行第二列到最后一个,15+16*6+10。杨辉三角的规律[bx]=[bx-17]+[bx-16]双层循环,实现4次bx++,3次bx++等等。第一行跳0个,第二行跳1个,第三行跳2个等等。将第一列赋1,将每行最后一个数赋1。bx+dx选择上三角,跳过下三角。注意跳出循环时cx=0。原创 2025-01-05 15:12:29 · 856 阅读 · 0 评论