立志当学霸! 发表于 2013-12-24 09:56:24

新手交流,第十章作业三。


assume cs:code,ds:data
data segment
db 10 dup (0)
data ends
code segment
start:mov ax,12666

      mov bx,data
                mov ds,bx
                mov si,0
                call dtoc
                mov dh,8
                mov dl,3
                mov cl,0cah
                call show_str
                mov ax,4c00h
                int 21h

dtoc:push dx ;跟小甲鱼老师的不同,我将入栈操作在jcxz之前,这样的话,就可以将ascll码全部入栈,之后逆序出栈就行了
      push cx
                push ax
                push si
                push bx
                push di
                mov di,0
       s1:mov cx,0
          mov dx,0
          mov bx,10
                div bx
                add dx,30h
                push dx
                inc di
                mov cx,ax
                jcxz s2
                jmp s1
       s2:mov cx,di
   s3:pop dx
           mov ds:,dl
          inc si
                loop s3
          pop di
          pop bx
          pop si
                pop ax
                pop cx
                pop dx
          ret

               
show_str: push dx; 给定参数 dh=行号 dl=列号 cl=颜色 ds:si指向字符串首地址 返回:无 作用:在指定位置显示字符串,以0结尾
          push si
          mov ch,0
          mov ax,0b800h
                  mov es,ax
              mov al,160
                  dec dh
                  mul dh
                  mov bx,ax
                  mov al,2
                  mul dl
                  sub ax,2
                  add bx,ax
                  mov al,cl
                  mov di,0
                  mov ch,0
   s:   mov cl,ds:
              jcxz ok
              mov es:,cl
                  mov es:,al
                  inc si
                  add di,2
          jmp short s
       ok:pop si
              pop dx
              ret

          
code ends
end start          
               

立志当学霸! 发表于 2013-12-24 09:58:48

有一个问题,如果在执行   div bx这里,除法溢出了,那怎么办,如果在子程序里面调用实验二 的子程序,会不会出问题呢?
页: [1]
查看完整版本: 新手交流,第十章作业三。