微机原理课堂演示代码

上传人:第*** 文档编号:31140116 上传时间:2018-02-05 格式:DOC 页数:9 大小:379KB
返回 下载 相关 举报
微机原理课堂演示代码_第1页
第1页 / 共9页
微机原理课堂演示代码_第2页
第2页 / 共9页
微机原理课堂演示代码_第3页
第3页 / 共9页
微机原理课堂演示代码_第4页
第4页 / 共9页
微机原理课堂演示代码_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《微机原理课堂演示代码》由会员分享,可在线阅读,更多相关《微机原理课堂演示代码(9页珍藏版)》请在金锄头文库上搜索。

1、1分支机构分支程序举例:CCTV 幸运 52 有个猜商品价格的游戏,这里简化成猜数游戏。根据提示信息输入你所猜的数,计算机经过与谜底比较后提示你高了或低了,如果猜中则恭喜你答对了。higher:right:NYInput:显示: guess a number显示输入一个字符ALAL关键字相等?显示:Your number is lower,Guess again高于?显示:Your number is lower,Guess again GUESS AGAIN显示:congratulate you !your number is right猜数程序结束YN2;Guess numberdata

2、segment ;段定义伪指令msg1 db 10,13,Guess a number: $msg2 db 10,13,your number is lower! guess again: $msg3 db 10,13,your number is higher! guess again: $msg4 db 10,13,Congratulate you! your number is right!$key db 34hdata ends ;段定义伪指令code segment ;段定义伪指令assume cs:code,ds:data ;段基假设begin: mov ax,data ;段基装填

3、mov ds,axmov ah,9 ;显示一个字符串mov dx,offset msg1int 21h ;DOS 功能调用input: mov ah,1 ;从键盘上输入一个数字符到 ALint 21h ;DOS 功能调用cmp al,key ;输入字符与谜底比较je right ;相等ja higher ;高了mov dx,offset msg2 ;低了mov ah,9int 21h ;DOS 功能调用jmp inputhigher: mov dx,offset msg3mov ah,9int 21h ;DOS 功能调用jmp inputright: mov dx,offset msg4mov

4、 ah,9int 21h ;DOS 功能调用mov ah,4ch ;结束程序,返回 DOSint 21hcode ends ;段定义伪指令end begin ;结束汇编循环程序1、 先执行后判断结构例 1:(先执行后判断循环)已知从 BLOCK 开始有 N 个带符号字节数据,试编程找出其中数值最大的数存入 MAX 单元。dat segment3block db 2,34,67,-45,3,-54h,-23,-6h,db 08,80,29,65h,-124,76,57,23hn equ $-blockmax db ?dat endscod segmentassume cs:cod,ds:datb

5、eg: mov ax,datmov ds,axmov cx,n-1mov al,blockmov bx,offset block+1lp: cmp al,bxjge nextmov al,bxnext: inc bxloop lpmov max,almov ah,4chint 21hcod endsend beg数 据 指 针 初 始 化循 环 控 制 变 量 初 始 化最 大 值 寄 存 器 AL初 始 化ALBXL数 据 指 针 修 改循 环 控 制 变 量 修 改循 环 结 束 ?存 储 结 果 ( 最 大 数 )结 束 程 序 , 返 回 DOS寻 找 最 大 数YNYN42、 先判断

6、后执行结构例 4-7:(先判断后执行循环)试编程从键盘上输入一位十进制数 N,并计算 N!存入字变量 Nj.如果计算溢出应提示.dat segmentstring db Please input a number(0-9):$err db your number is too large,10,13,24hnj dw ?dat endscod segmentassume cs:cod,ds:datbeg: mov ax,datmov ds,axreinput: mov dx,offset stringmov ah,9int 21hmov ah,1int 21hcmp al,39hja rein

7、putand al,0fhmov ch,0mov cl,alinc cxmov dx,0mov ax,1lp: loop oprtjmp short endloprt: mul cx; cmp dx,0; jnz overjmp lp;over: mov dx,offset err; mov ah,9; int 21h; jmp reinputendl: mov nj,axmov ah,4chint 21hcod endsend begDX: A=X*C提 示 数 据 太 大循 环 控 制 变 量 修 改循 环 结 束 ?结 束 程 序 , 返 回 DOS计 算 N!YN输 入 数 据判 断

8、输 入 数 据 合 法 性循 环 初 始 化 NN=9?YYN= 0?53、 双重控制循环(循环控制条件二个或二个以上)例 4-9:(双重控制循环)关键字搜索。已知从 STRING 开始有一个字符串(串长100)。编程搜索其中是否有关键字符串AB,如有,显示其相对串首的偏移量,如无,显示NO FOUND。dat segmentstring db CDE12FGHIJKL456MNAB123fg7len equ $-stringkey db ABofst db 4 dup($)nof db 10,13,no found$dat endscod segmentassume cs:cod,ds:da

9、tbegin: mov ax,datmov ds,axmov cx,lenmov bx,0mov ax,word ptr keylp: cmp al,stringbxjnz nextcmp ah,string+1bxjz fundnext: inc bxloop lpmov dx,offset nofmov ah,9int 21hjmp short endlfund: mov ax,bxmov bl,10div blor ax,3030hmov wodr ptr ofst,axmov dx,offset ofstmov ah,9int 21hendl: mov ah,4chint 21hcod

10、 endsend begin子程序显 示 没 有 找 到循 环 结 束 ?结 束 程 序 , 返 回 DOS寻 找 字 符 子 串Y比 较 第 二 关 键 字循 环 指 针 和 变 量 修 改不 相 同 ?NY比 较 第 一 关 键 字相 同 ?找 到 了 , 计 算并 显 示 偏 移 量初 始 化 YNN6例 1:将一字节二进制数据转换成二位十六进制数显示。dat segmentstring db 1ah,2bh,56h,78h,90h,0a2h,0b3hnum equ $-stringdat endsstack segment stack stackdw 20 dup(?)stack en

11、dscod segmentassume cs:cod ,ds:dat,ss:stackhtoa proc ;子程序定义 push axcmp dl,9 ;入口参数:DL 的低四位要显示的十六进制数jbe dsp1add dl,7dsp1: add dl,30hmov ah,2int 21hpop axrethtoa endpstart: mov ax,datmov ds,axmov si,num ;初始化循环变量mov bx,offset string ;初始化数据指针lp: mov dl,bx ;从内存取一个字节到 DLmov dh,dl ;备份mov cl,4 ;准备子程序入口参数shr

12、dl,cl ;先显示高四位,将高四位移到低四位call htoa ;调用子程序mov dl,dh ;恢复 DL 内容and dl,0fh ;准备子程序入口参数call htoamov dl, ;显示字节间的分隔符int 21hinc bx ;修改数据指针dec si ;修改循环变量jnz lp ;循环控制mov ah,4chint 21hcod endsend start7例 4-11:已知从 BLOCK 开始有一以 01 字符结尾的 ASCII 字符串,试编程显示该字符串,并在键盘输入命令编辑该字符串,显示编辑后结果,直到满意。结束程序 , 返回 D O SE D I T调用 E D I T

13、 子程序N结束命令 ?YN插入 ?Y S I S I + 1 S I S I + 1遇到结尾字符 ?保护 C X 和要插入的字符搜索结尾字符 , 统计插入点到结尾字符间字符数恢复现场 S I + 1 S I S I S I - 1循环结束 ?插入字符返回YYNN文本编辑主程序显示要编辑的字符串显示编辑命令输入提示键盘接收编辑命令从输入缓冲区取输入的参数装入 E D I T 子程序的入口参数8dat segmentblock db 10,Mr.hnh Wellcom!,01len equ $-blockdb 30 dup(24h)string db 10,13,input edit comman

14、d(offset(0-9),+/-,letter):$keybuf db 10,0,10 dup(0)dat endsstack segment stack stackdw 50 dup(?)stack endscod segmentassume cs:cod,ds:dat,SS:STACKedit proc ;EDIT 子程序。;入口参数:距串首偏移量:SI,插入+/删除-:CF,插入字符:ALjc ins ;是插入,转del: mov al,si ;是删除,所删除字符之后的子串前移mov si+1,alinc sicmp al,01 ;判断是否字符串尾jne del ;遇到字符串尾则退出循

15、环,转jmp short retrnins: push cx ;插入处理,需要的资源较多,保护现场push axmov cx,1 ;统计插入点之后的子串长度,子串长度变量初始化next: cmp byte ptrsi,01 ;比较是否字符串尾je fund ;是,转下道工序inc siinc cx ;子串长度变量加一jmp nextfund: mov al,si ;插入点之后的子串后移一位mov si+1,aldec siloop fundpop axmov si+1,al ;加入要插入的字符pop cxretrn: ret ;子程序返回edit endp9begin: mov ax,dat

16、;段基初始化mov ds,axlp: mov dx,offset block ;先显示要编辑的字符串mov ah,9int 21hmov dx,offset string;显示输入编辑命令及格式提示mov ah,9int 21hmov dx,offset keybuf;从键盘上输入编辑命令。;格式:距串首偏移量,插入+/删除-,插入的字符mov ah,10int 21hcmp keybuf+2,0dh ;判断是否结束编辑命令,是则转,结束程序je endlmov al,keybuf+2 ;从键盘输入缓冲区取距串首偏移量转换成数值;送入口参数 SIand al,0fhmov ah,0mov si,axcmp keybuf+3,- ;从键盘输

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号