第11-12讲-第4章--汇编语言程序设计.ppt
stack segmentstack ;定义堆栈段
dw512dup(?)
;堆栈段有512字〔1024字节〕空间
stack ends ;堆栈段结束
data segment ;定义数据段
string db’Hello,Everybody!’,0dh,0ah,’$’
data ends
code segment’code’ ;定义代码段
assumecs:code,ds:data,ss:stack
start: movax,data ;建立DS段地址
movds,ax
movdx,offsetstring
movah,9
int21h
movax,4c00h
int21h ;利用功能调用返回DOS
code ends ;代码段结束
endstart ;汇编结束,同时指明程序起始点;例 dataseg
ARR1DB00H,11H,22H,33H
ARR2DW3456H,1024,25×25,1000/3,10A0H
dataends;编辑;微机原理与接口技术
第4章深入浅出学编程;通过本章的学习,应当掌握以下内容:
了解汇编语言的根本知识和特点。
熟悉汇编语言的程序结构、段定义以及语句的格式。
掌握汇编语言常用伪指令的使用方法。
熟练掌握汇编语言程序设计的根本方法:顺序结构、分支结构、循环结构和子程序结构。
*掌握程序设计中的宏指令和常用的系统功能的调用方法。;教学目的;教学重点;;;;;;;算法的概念;用流程图表示算法;传统流程图的流程可以是:;〔3〕分支(选择〕结构〔4〕子程序结构;图中没有一条从入口到出口的路径通过A框。;4.3顺序程序设计;例4.1;64位数据左移8位例4.2-1/2;例4.2-2/2;;例题代码转换-1/2;例题代码转换-2/2;开始; MOV SS,AX
MOV SP,LENGTHSTK
MOV AL,DATA MOV AH,AL
AND AL,0F0H MOV CL,04
SHR AL,CL
MOV HEX,AL
AND AH,0FH MOV HEX+1,AH
MOV AX,4C00H
INT 21H
CSEGENDS
END BEG
;4.4分支程序设计;*/18;单分支程序设计;例题求绝对值;例题无符号数除以2(自学〕;分析命题;分析命题;双分支程序设计;例题显示BX最高位-解法1;例题显示BX最高位-解法2;例题显示BX最高位-解法3;多分支程序设计;多分支结构;【例】编程实现以下函数的功能,其中X、Y为无符号字节数。〔多分支〕;流程图;地址表形成多分支〔太技巧,不用看〕; .data
msg dbInputnumber(1~8):,0dh,0ah,$
msg1 dbChapter1:...,0dh,0ah,$
msg2 dbChapter2:...,0dh,0ah,$‘
...
msg8 dbChapter8:...,0dh,0ah,$
table dwdisp1,disp2,disp3,disp4
dwdisp5,disp6,disp7,disp8
;取得各个标号的偏移地址;start1: movdx,offsetmsg ;提示输入数字
movah,9
int21h
movah,1 ;等待按键,ASCIICODE
int21h
cmpal,1 ;数字1?
jbstart1
cmpal,8 ;数字8?
jastart1
andax,000fh ;将ASCII码转换成数字; decax
shlax,1 ;等效于addax,ax
movbx,ax
jmptable[bx]
;〔段内〕间接转移:IP←[table+bx]
start2: movah,9
int21h
.exit0
disp1: movdx,offsetmsg1 ;处理程序1
jmpstart2
disp2: movdx,offset