试验五循环程序设计.DOC

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
试验五循环程序设计

实验五 循环程序设计 一、试编制一程序:从键盘输入一行字符,要求第一个键入的字符必须是空格符,如不是空格符,则退出程序;如果是空格符,则开始接收键入的字符并顺序存放在首地址为BUUFER的缓冲区中(空格不保存),直到接收到第二个空格为止。 datarea segment rl db 0dh,0ah,$ buffer db 80 dup(?),’$’ flag db ? datarea ends progname segment assume cs:progname,ds:datarea main proc far start: push ds sub ax,ax push ax mov ax,datarea mov ds,ax lea bx,buffer mov flag,0 next:mov ah,01 int 21h test flag,01h ;是第一个字符吗?标志单元为1,表示输入的不是第一个字符 jnz follow ;不是第一个字符则转。。 cmp al,20h ;第一个字符是空格吗? jnz exit ;第一个字符不是空格则退出 mov flag,1 ;第一个字符是空格标志单元置1 jmp next ;等待输入下一个字符 follow:cmp al,20h ;非第一次输入的字符是空格吗? jz disp ;exit ; mov[bx],al ;不是空格,则将输入的字符保存到首地址为BUFFER的缓冲区。 inc bx jmp next disp:lea dx,rl mov ah,9 int 21h lea dx,buffer mov ah,9 int 21h exit:ret main endp progname ends end start 二、从键盘输入两个十进制数,转换成二进制数进行加法运算,两数相加的结果输出在屏幕上. (空格或逗号作为两数的的分隔符). data segment bini dw ? result dw ? decasc db 5 dup(?) flag db 0 data ends code segment assume cs:code,ds:data main proc far push ds sub ax,ax push ax mov ax,data mov ds,ax mov bx,0 ;BX中保存转化的中间结果,初始BX=0.(((Di*10)+Di-1)*10+......+D0) new: mov flag,0 newchar:mov ah,1 int 21h ;等待键盘输入 push ax sub al,30h ; jl s1 ;输入字符小于零,为非0-9的数,则转移 cmp al,9 jg s1 ;输入字符大于9,为非0-9的数,则转移 cbw ;将AL中的字节字符扩展到AX为字 xchg ax,bx ;AX和BX中的数进行交换(原AX中为Di-1,BX中为Di) mov cx,10 ; mul cx ; xchg ax,bx ;乘十后的结果交换到BX中,既为(Di*10) add bx,ax ;作((Di*10)+Di-1)运算,结果在BX中 jmp newchar ;转等待键盘输入 s1: pop ax cmp flag,1 ;标志位为1吗? jz add1 ;为1转 cmp al,20h jz sf ;是空格转 cmp al,, jnz sbini ; sf: mov bini,bx ; mov flag,1 ;置标志位 mov bx,0 jmp newchar ; add1: add bx,bini sbini: mov result,bx;保存二进制数结果到内存单元 mov ax,0000h ;****************************************************************** binidec:mov dx,result ; 将二进制数取到DX中,准备转换成十进制ASCAII码 mov si,offset decasc-1; skip:inc si mov ax,dx ;把要转换的二进制数送到AX mov dx,0000h mov cx,10 div cx ;AX中的二进制数除以十 xchg ax,dx ;将余数从DX中交换到AX中,而商交换到DX中 add al,30h ;转换成ASCAII码 mov [si],al ;保存一位十进制ASCAII码 cmp dx

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档