-第4章 汇编语言程序设计.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:19 大小:451KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

-第4章 汇编语言程序设计.ppt

-第4章汇编语言程序设计.ppt

预览

免费试读已结束,剩余 9 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第4章汇编语言程序设计顺序程序完全按指令书写的前后顺序执行每一条指令,是最基本、最常见的程序结构。例4.1例4.2例4.264位数据左移8位的图示分支程序根据条件是真或假决定执行与否。判断的条件是各种指令,如CMP、TEST等执行后形成的状态标志。转移指令Jcc和JMP可以实现分支控制;还可以采用MASM6.x提供的条件控制伪指令实现。例2.41例4.3orah,ah;等效于cmpah,0jzfunction0;ah=0,转向function0decah;等效于cmpah,1jzfunction1;ah=1,转向function1decah;等效于cmpah,2jzfunction2;ah=2,转向function2...Tabledbdisp1,disp2,disp3,disp4,....datamsgdb'Inputnumber(1~8):',0dh,0ah,'$'msg1db'Chapter1:FundamentalsofAssemblyLanguage',0dh,0ah,'$'msg2db'Chapter2:8086InstructionSet',0dh,0ah,'$'msg3db'Chapter3:StatementsofAssemblyLanguage',0dh,0ah,'$'msg4db'Chapter4:AssemblyLanguageProgramming',0dh,0ah,'$'msg5db'Chapter5:32-bitInstructionsandProgramming',0dh,0ah,'$'msg6db'Chapter6:MixedProgrammingwithC/C++',0dh,0ah,'$'msg7db'Chapter7:FPInstructionsandProgramming',0dh,0ah,'$'msg8db'Chapter8:MMXInstructionsandProgramming',0dh,0ah,'$'tabledwdisp1,disp2,disp3,disp4,disp5,disp6,disp7,disp8;取得各个标号的偏移地址start1:movdx,offsetmsg;提示输入数字movah,9int21hmovah,1;等待按键int21hcmpal,'1';数字<1?jbstart1cmpal,'8';数字>8?jastart1andax,000fh;将ASCII码转换成数字decaxshlax,1;等效于addax,axmovbx,axjmptable[bx];(段内)间接转移:IP←[table+bx]start2:movah,9int21h.exit0;disp1:movdx,offsetmsg1;处理程序1jmpstart2disp2:movdx,offsetmsg2;处理程序2jmpstart2disp3:movdx,offsetmsg3;处理程序3jmpstart2disp4:movdx,offsetmsg4;处理程序4jmpstart2...循环结构一般是根据某一条件判断为真或假来确定是否重复执行循环体。循环指令和转移指令可以实现循环控制;还可以采用MASM6.x提供的循环控制伪指令实现。.modelsmall.stack256.datasumdw?.code.startupxorax,ax;被加数AX清0movcx,100again:addax,cx;从100,99,...,2,1倒序累加loopagainmovsum,ax;将累加和送入指定单元.exit0end.startupmovax,wordX;测试目标送AXmovcx,16;循环计数器置初值movdl,-1;计位器置初值again:incdltestax,1rorax,1;循环指令不影响ZFloopeagain;CX≠0且ZF=1(测试位为0);继续循环jenotfoundmovbyteY,dljmpdonenotfound:movbyteY,-1;ZF=1,测试目标的16个位均为0done:.exit0.startupmovbx,offsetstringagain:moval,[bx];取一个字符oral,al;是否为结尾符0jzdone;是,退出循环cmpal,'A';是否为大写A~Zjbnextc