王朝网络
分享
 
 
 

汇编教程2 by sssa2000

王朝other·作者佚名  2006-01-30
宽屏版  字体: |||超大  

汇编教程2 by sssa2000

和女朋友有矛盾了,还是电脑好,可以让我静心。

让我们开始把。上次用一个例子给大家一个模糊的概念,可能你并不是完全明白那个例子的来龙去脉,这没有关系,有个认识就可以了,

我觉得学习汇编最大的障碍是 书上的教法不适合初学者,即使是有基础的人学起来也有点迷糊,既然是编成当然要从实际入手,这次开始我们来一个例子热身,和上次那个差不多

=========================================================================

;目的:将键盘输入的多字符(注意是多字符)保存到由若干个存储单元组成的变量inbuf中,以回车结束。

code segment

assume cs:code ;由于没有声明变量,不需要设置数据段

start: mov bx,00h

again: mov ah,01h ;调用中断,作用不用说了吧,键入一个字符将ascii到al(注意是一个字符)

int 21h

cmp al,0dh ;如果al中的值是0dh,

jz stop ;则转到stop标号处执行

mov [inbuf+bx],al ;把al的数据装入到地址是inbuf+bx的地址

inc bx ;bx=bx+1

jmp again ;跳到again标号处执行,以接受下一个字符,直到用户回车

stop: mov ah,4ch

int 21h

code ends

end start

===============================================================================

程序不长,初学者最怕很长一段的程序,我那时也怕,现在也怕,人懒呀。

就这段程序,讲一讲mov,和分支程序。

注意了,背景音乐好了么,建议用神秘园,为什么?因为我在听。

mov指令

格式:mov 目的操作数,原操作数

说明:1、立即数,段寄存器cs,不能作为目的操作数;

2、原操作数和目的操作数不能同为存储器操作数。下面指令是错误的

mov 4h,bl

mov cs,ax

mov [1000h],[bx] ;[]表示取地址

3、原操作数和目的操作数的类型必须一致,即同为单字节数,或同为双字节数,当指令中有一个操作数的类型明确时,另一个操作数被视为同一类型。可以用byte ptr 或word ptr将一个存储器操作数定义为字节或字类型。当存储器操作数为字类型时,寄存器或立即数的高字节对应其高地址,低字节对应低地址。

解释一下,byte ptr是将一个操作数强制定义为byte类型,word ptr类似,类似c语言的()

最后一句话什么意思呢?我们知道,一个字=两个字节,在计算机中,对于字的存储是以字节为单位的,大家都知道堆栈遵循“先进后出”的原则,所以,要高低位对换,举个例子:一个字类型,值为:1234h,在内存中的位置:

| 34h | 34为变量的低位。

|-------|

| 12h | 12为变量的高位。

|------ |

| |

好,我们来看这句话,“当存储器操作数为字类型时,寄存器或立即数的高字节对应其高地址,低字节对应低地址。”举个例子,

mov [2000h],ax

用图表示:

| 存储器 |

|----------|

|存ax的低位al

|----------|

|存ax的高位ah

|----------|

分支程序

就是if...then ,goto等等这些,当然在汇编里面,没有这些语句

先看看cmp指令,

格式:cmp 目的数,原操作数

作用:根据两操作数的大小关系产生状态标志值,

jc/jnc指令

格式:jc/jnc 标号

作用:jc有进位则转,即cf=1 jnc相反 (什么是cf? 以后我会专门讲解电脑的寄存器,别急)

jp/jnp

jp:1的个数为偶数则转(pf=1),jnp相反

jz/jnz

jz:为零则转,(zf=1) jnz:相反

jl/jge

jl:小于则转(sf<>of或者zf=0) jge 大于等于则转(sf<=of或者zf=1)

。。。。。。。。还有很多哦,不写了,自己查资料,不要太懒了哦。

还有一个最重要的,jmp无条件跳转指令,不用解释了吧?

上面那个例子再看看,体会一下怎么跳转的。会有收获的哦~~

不过瘾?再来一段程序,

=========================================================================

求x-y的绝对值

dseg segment

x db 40h

y db 73h

z db ?

dseg ends

sseg segment stack ;设置堆栈段

db 80h dup(0)

sseg ends

cseg segment

assume ds:dseg,ss:sseg,cs:cseg ;是不是觉得和以前的不一样了?呵呵,体会一下

start:

mov ax,dseg

mov al,x

cmp al,y ;根据x-y产生状态标志

jl xl ;有符号数则跳转

sub al,y ;

mov z,al ;z=x-y

xl: mov bl,y

sub bl,al

mov z,bl ;z=y-x

ok:

mov ah,4ch

int 21h

cseg ends

end start

=============================================================================

好了,应该没什么问题了吧? 本来还想讲一些寻址方式的,下一章需要专门讲一下基础知识,避免不了的,不过到了现在,你对汇编的认识应该有点深度了,汇编其实并不难的,是么?如果你有这个感觉了,那我的目的也达到了,下一讲我们讲解寄存器,和寻址方式。不讲不行的。好了,class over!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有