pyliuguoqing 发表于 2018-5-11 16:09:55

哈哈,我做的王爽汇编第三版实验10的答案

第二个是抄的网上的,这个感觉还不错(其实我没去搞太明白,那个公式就没太懂怎么用。。。)、
但是第一个和第三个是我完全原创,尤其是第三个,比百度到的强多了啊,很有成就感!!废话不多说,下面贴上

虽然我知道有很多大牛,也基本没人看。。。我是初学,头一次发帖,轻拍

第一个
assume cs:code,ds:data

data segment
db 'welcome to masm!',0,1
data ends

code segment

show_str: mov ax,0b800h
          mov es,ax
          mov al,160
          mul dh
          push ax
          mov al,2
          mul dl
          pop di
          add di,ax ;将显示起始位置计算并设置为 es:
          mov bl,cl ;将cl值传入bl留用颜色设置
          
   print: mov ch,0
          mov cl,ds:
          jcxz print_end ;若读取字符为0时跳至结束
          mov es:,cl ;设置字符内容
          mov es:,bl ;设置字符颜色
          inc si
          add di,2;移动指针
          jmp short print
print_end:ret         

start: mov dh,8
       mov dl,10
       mov cl,2
       mov ax,data
       mov ds,ax
      
       call show_str

mov ax,4c00h
int 21h
code ends

end start

第二个
assume cs:code

code segment

   divdw: push ax   
          mov dx,ax
          mov dx,0
          div cx
          pop bx
          push ax

          mov ax,bx
          div cx
          mov cx,dx
          pop dx
divdw_end:ret               
         

start: mov ax,4240h
       mov dx,000fh
       mov cx,0ah
            
       call divdw

mov ax,4c00h
int 21h
code ends

end start

第三个
assume cs:code

data segment
db 10 dup(0)
data ends

code segment

   dotc: mov bx,10;设置除数
         mov di,0   ;设置结果的存储顺序
dstart: mov dx,0   ;因为商要大于255,所以要用32位被除数,dx要设为0   
         div bx
         mov cx,ax;当商为0时,要结束计算,跳转
       add dl,30h ;设置ASCⅡ码
         push dx    ;要进栈,之后在放出来,因为要逆序存储,否则结果是反的
         inc si          ;记录结果的位数
       jcxz s   ;cx=0时,跳转   
       jmp short dstart

      s: mov cx,si;根据结果的位数设置循环次数
   s1: pop dx
       mov ,dl;存储到ds时要用字节,但是出栈时必须是两位的字,此时用dl的内容即可
       inc di   
       loop s1    ;循环,将栈内数据都转移到ds段中

dotc_end:ret

show_str: mov ax,0b800h
          mov es,ax
          mov al,160
          mul dh
          push ax
          mov al,2
          mul dl
          pop di
          add di,ax ;将显示起始位置计算并设置为 es:
          mov bl,cl ;将cl值传入bl留用颜色设置
          
   print: mov ch,0
          mov cl,ds:
          jcxz print_end ;若读取字符为0时跳至结束
          mov es:,cl ;设置字符内容
          mov es:,bl ;设置字符颜色
          inc si
          add di,2;移动指针
          jmp short print
print_end:ret         


start: mov ax,12666
       mov bx,data
       mov ds,bx
       mov si,0
            
       call dotc
      
       mov dh,8
       mov dl,3
       mov cl,2
       mov si,0

       call show_str


mov ax,4c00h
int 21h
code ends

end start

pyliuguoqing 发表于 2018-5-13 17:55:53

{:10_254:}
页: [1]
查看完整版本: 哈哈,我做的王爽汇编第三版实验10的答案