
汇编实验
deniece1
这个作者很懒,什么都没留下…
展开
-
汇编实验4.1文件代号下的文件管理中为什么buf_size为80而buf可以容纳200个字节,矛盾吗?(不矛盾)
data segmentPgsize dw ?buf_size db 80s_buf db ?buf db 200 dup(?)cur dw ?handle dw ?mess_getname db 0dh,0ah," Please input filename:$"mess_err1 ...原创 2019-12-24 11:23:29 · 1078 阅读 · 0 评论 -
键盘扫描码(表格)
...转载 2019-12-17 21:54:19 · 7783 阅读 · 0 评论 -
虚拟键码对照表与ASCII对照表的区别
ASCII码 键盘 ...转载 2019-12-14 21:48:40 · 727 阅读 · 0 评论 -
汇编语言中断类型
0H 除以零 1H 单步(用于DEBUG) 2H 非屏蔽中断 3H 断点指令(用于DEBUG) 4H 溢出 5H 打印屏幕 6H 保留 7H 保留 8259中断...转载 2019-12-13 11:32:02 · 2301 阅读 · 0 评论 -
seg是伪操作符,用来取后面符号的段地址
mov ax,seg area中的seg是什么意思? 可以写作mov ax,area吗?不可以,seg是伪操作符,用来取后面符号的段地址,如果不加seg则取其内容.mov dx,offset area则可以取得area的偏移地址。...原创 2019-12-13 11:11:06 · 5037 阅读 · 0 评论 -
伪指令PAGE和TITLE说明
伪指令PAGE和TITLE 用来控制被汇编的程序的列表格式PAGE [length][name]指定列在一页上的最大列数和一行上最大的字符数PAGE 60,130 每页最多60列,每行130行字符TITLE text [comnent]标题 文本 注释TITLE Assemly 这是汇编程序转载于:https://www.cnblogs.com/pengshao/archive/20...转载 2019-12-13 09:37:38 · 1588 阅读 · 0 评论 -
汇编实验:屏幕窗口程序(代码有较为详细的注释)
实验3.4 屏幕窗口程序 1.题目:屏幕窗口程序2.实验要求:在屏幕上开出三个窗口,它们的行列坐标按照教材要求。光标首先定位在右窗口最下面一行的行首(15,50),如从键盘输入字符,则显示在右窗口,同时也显示在下窗口的最下面一行。若需要将字符显示于左窗口,则先按下键,接着再从键盘输入字符,字符就会从左窗口的最下行开始显示,同时下窗口也显示出左窗口的内容。如若再按下键,输入字符就会接在先前...原创 2019-12-11 19:55:36 · 2281 阅读 · 0 评论 -
键盘I/O中断调用(INT 16H)和常见的int 17H、int 1A H
键盘I/O中断调用有三个功能,功能号为0, 1, 2,且必须把功能号放在AH中。 (1)0号功能调用 格式:MOV AH, 0INT 16H功能:从键盘读入字符送AL寄存器。执行时,等待键盘输入,一旦输入,字符的ASCII码放入AL中。若AL=0,则AH为输入的扩展码。 (2)1号功能调用 格式:MOV AH, 01HINT 16H功能:用来查询键盘缓冲区,对键盘扫描但不等待,并设置...转载 2019-12-08 18:35:11 · 7009 阅读 · 3 评论 -
常用的键盘按键(一些小技巧)
End键,为键盘的一个键(一般在键盘右上角)。编辑文本时,若光标不在最后,按下END键,光标会定位到最后面。如果是一篇文档,按CTRL+END,光标会定位到文档的最后。HOME键和END键正相反,单独按HOME是光标定位到本行的最前面,如果按CTRL+HOME键,光标定位到文档最前面.但是MAC机器键盘没有这两个按键,左右箭头就是HOME和END键 。[PageUp]或[PgUp]向上翻页键...原创 2019-12-08 21:01:28 · 1159 阅读 · 0 评论 -
汇编中的扫描码、ASCII码(也称字符码)、扩展码、虚拟键码 的区别
扫描码 是键盘对应按键的编码 ,虚拟键码 是操作系统对 “对应按键”的编码,键盘ASCII码 ,是操作系统对“对应 虚拟键码”的编码键盘扫描码:是每个键盘生产厂家为自己所生产的键盘设置的扫面方式,目的检测是那个键被按下。ASCII码:是虚拟键码对应的编码。虚拟键码是按照相关国际标准制定,全世界的计算机都要遵守。虚拟键码:为了解决不同键盘生产厂家生产键盘的排布或扫面方式不同,而建立的从键盘扫...转载 2019-12-08 18:32:31 · 2929 阅读 · 0 评论 -
汇编中的REPZ CMPSB
repz cmpsb 如果ds:si和es:di所指向的两个字节相等,则继续比较。CMPSB指令,是用 DS:[SI] 所指的字节单元内容,减去 ES:[DI] 所指的字节单元的内容。DS:[SI] 是被减数, ES:[DI] 是减数。验证方法很简单,将这两个内存单元的内容设置成不同的数,看指令执行后CF是0还是1,就能证明了。例如,你将DS:[SI]单元内容设成01H,将E...原创 2019-12-04 14:33:10 · 11171 阅读 · 2 评论 -
什么是断点,为什么要设置断点?断点的作用是什么?
问题阐述在程序调试时,为什么要设置断点,设置断点有什么好处?专家解答断点是调试器设置源程序在执行过程中自动进入中断模式的一个标记。当程序运行到断点时,程序中断执行,进入调试状态。在 Visual Studio 2010的源程序编辑界面中,设置断点的方法有如下几种。(1)单击所要设置断点的代码行左边的灰色区域。单击一次设置断点,再次单击取消断点。(2)用鼠标右键单击某代码行,在弹出的快捷...原创 2019-12-03 16:31:35 · 65071 阅读 · 3 评论 -
16位代码段与32位代码段的区别
16位代码段与32位代码段的区别:16位代码段与32位代码段的区别如下: 16位代码段最长只能为64k,段内偏移量为16位,默认的指令地址及操作地址为16位; 32位代码段最长可以4G,段内偏移量为32位,默认的指令地址及操作地址为32位。 是否能够使用 eax, edx 等寄存器与是否使用16位代码段及32位代码段无关。16位代码段、...转载 2019-11-30 09:26:12 · 4008 阅读 · 0 评论 -
递归解决汉诺塔问题
版权声明:本...转载 2019-11-28 22:53:13 · 421 阅读 · 0 评论 -
汇编:ADD
The add instruction, like it’s x86 counterpart, adds two values on the 80x86. This instruction takes several forms. There are five forms that concer...转载 2019-11-28 21:54:57 · 544 阅读 · 0 评论 -
汇编指令--移位操作SHL、SHR、SAL、SAR以及它们的区别
逻辑移位: SHL、SHR算术移位: CAL、CAR12无符号数的乘法和除法可以用逻辑移位;有符号数的乘法和除法可以用算...转载 2019-11-27 14:09:36 · 38591 阅读 · 1 评论 -
汇编: mul乘法指令(字乘法结果在dx:ax中,8位乘法:一个乘数默认放在al中)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声...转载 2019-11-21 09:17:59 · 5798 阅读 · 0 评论 -
详解汇编语言中乘法指令:MUL(无符号数乘法)、IMUL(有符号数乘法)
本文参考了马维华老师的《微机原理与接口技术》一书指令格式:MUL REG/MEM ;REG寄存器,MEM存储器IMUL REG/MEMMUL和IMUL指令分别用于实现无符号数的乘法和有符号数的乘法运算。都只有一个源操作数,可以使寄存器或存储器,而且目标操作数隐含规定在累加器中。1)MUL指令(a)、字节乘法,则AL×REG8/MEM8,乘积存于AX中。(b)、字乘法...转载 2019-11-13 10:00:09 · 27638 阅读 · 0 评论 -
汇编--INT 10H功能
汇编–INT 10H功能 </h1> <div class="clear"></div> <div class="postBody cye-lm-tag"> INT 10H 是由 BIOS 对屏幕及显示器所提供的服务程序,而后倚天公司针对倚天中文...转载 2019-11-13 09:57:57 · 6169 阅读 · 0 评论 -
汇编中的DW:DW 定义一个字
汇编中的DW是什么意思?那DB呢DW 定义一个字DB 定义一个字节DD 定义一个双字前面的D表示定义,后面的字母W 、B 、D依次表示字(一般为16位)、字节(为8位)、双字(一般为32位)...原创 2019-11-06 14:25:43 · 5549 阅读 · 0 评论 -
汇编实验注意点(待补充和更新)
1.不仅仅只有cx可以存放loop循环的计数值,还可以存放在例如cl或者ch中,通过循环体结束,用一个dec cl或者dec ch,再用 jnz 循环体标号,这样可以同样达到 loop 循环体标号的作用和效果,只不过,loop是隐含地默认将cx-1,比较cx是否为0,决定是否继续循环,而我们这里是手动的将循环计数减去1,再比较是否为02.DOSBOX中不能用movzx和movsx,那么就注意...原创 2019-11-06 09:38:30 · 317 阅读 · 0 评论 -
汇编实验 分类统计字符个数(debug中查看统计结果)
; test5:classify and count the number of characters;***************************************************************dseg segment para 'data'letter dw 0 digit dw 0 other dw 0mess1 db 'Please inp...原创 2019-11-06 09:06:14 · 1340 阅读 · 0 评论 -
汇编中常用的DOS系统调用功能号
注意:DOS功能调用,ah的值是16进制的,又因为0~9时,16进制和10进制的数字一样,所以在汇编代码中可以写mov ah,09(09后面不用加h,汇编代码中的数字后面若不加后缀h,默认是10进制的)int 21hint 21h 是系统调用,执行它以后,干什么取决于ax中的内容:ah=02h 输出单个字符ah=01h 输入单个字符(并把输入的字符回显到屏幕上(可以帮助检查是否输入有误)...原创 2019-11-04 19:39:00 · 5058 阅读 · 0 评论 -
汇编实验 用表格形式显示字符(附源码详细注释和相关注意的知识)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...原创 2019-10-23 11:04:41 · 1510 阅读 · 0 评论 -
汇编实验2.2 查找匹配字符串(附有详细注释和源代码和相关知识)
实验2.2 查找匹配字符串实验要求:程序接收用户键入的一个关键字以及一个句子。如果句子中不包含关键字则显示’No match!’;如果句子中包含关键字则显示‘Match’,且把该字在句子中的位置用十六进制数显示出来。相关知识1.为什么不能说直接 MOV DS,1000H 而是要通过AX设置首地址?答:不可以,因为不允许将立即数直接传送到段寄存器,这是mov命令本身的限制。2.汇编语言中...原创 2019-10-23 10:57:04 · 3449 阅读 · 0 评论 -
8086汇编push和pop指令注意点(push pop 只对字操作(不允许字节进栈))
1、**push pop 只对字操作(不允许字节进栈)**操作数长度为32位时进出栈为双字。例如 push dl是不正确的,应该是push dx2、汇编语言中PUSH导致SP减2而不是加2。原因:栈在内存中实际存储结构是栈底在高地址,栈顶在低地址(x86中的栈是“满递减栈”,也就是sp指向的栈的内存单元中是满的,有内容的,而且push数据时,栈顶对应的地址是递减的)3、8086push不可以...原创 2019-10-22 21:16:28 · 11358 阅读 · 0 评论 -
汇编语言中的start有什么用?(start只是一个标号,程序不一定非要从这儿才开始执行)
1.汇编语言中的start有什么用?start就是一个标号,标志程序的入口而已,程序加载到内存之后CS:IP会指向这个标号,从START指向的指令开始运行这个标号不一定是START,你也可以用MAIN,但在程序的最后要用END MAIN来提示程序结束START也不一定在代码段的最前面,它的前面是可以有指令或数据的例子(没有用start,用了main)(在代码段里放置变量是十分不规范的,这里...原创 2019-10-20 20:12:26 · 16582 阅读 · 2 评论 -
movsb movsw movsd 指令详解
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-10-20 18:36:32 · 648 阅读 · 0 评论 -
DOSBOX使用的一些方法和注意点(汇编实验中遇到的)
1.切换至全屏,用 Alt+Enter 键,再按,会回到原来的小屏幕下面为DOSBOX中的自述文件(readme)中的原文(一些提示):START: How to start?At the beginning you’ve got a Z:> instead of a C:> at the prompt.You have to make your directories ava...原创 2019-10-13 10:22:50 · 4703 阅读 · 0 评论 -
汇编实验1遇到的问题及解决之记录(以及尚未解决的疑惑,大神可以帮帮看看吗)
1.CLD汇编语言是什么意思答:汇编语言CLD(cleardirection)清除方向标志,cld即告诉程序si,di向前移动,相反功能指令是STD,将方向标志位DF置1, 在字串操作中使SI或DI的地址指针自动递减,字串处理由后往前。CLD指令功能:将标志寄存器Flag的方向标志位DF清零。在字串操作中使变址寄存器SI或DI的地址指针自动增加,字串处理由前往后。2.汇编问题rep mo...原创 2019-10-09 10:17:27 · 1709 阅读 · 0 评论