汇编网首页登录博客注册
jmuguy的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
文章收藏
友情链接

[2009-08-22 12:13] 实验10.1 10.2 10.3欢迎点评,修改

实验10.1
assume cs:code 
data segment 
  db 'Welcome to masm!',0 
data ends 

code segment 
start: mov dh,8 
       mov dl,3 
       mov cl,2 
       mov ax,data 
       mov ds,ax 
       mov si,0 
       call show_str 

       mov ax,4c00h 
       int 21h

show_str: mov ax,0b800h  
          mov es,ax     ;显存的段地址
          mov al,160
          mul dh 
          mov bx,ax     ;行偏移
          mov al,2  
          dec dl  
          mul dl        ;列偏移
          add ax,bx
          mov di,ax     ;总偏移
work:     mov cl,[si]
          mov ch,0
          jcxz show_back
          mov es:[di],cx
          mov cl,2
          mov es:[di+1],cl
          add di,2
          inc si
          jmp short work
show_back: ret
code ends
end start 
        

实验10.2
assume cs:code,ss:stack 
stack segment 
dw 8 dup (0) 
stack ends 

code segment 
start:mov ax,stack 
      mov ss,ax 
      mov sp,16 
      mov ax,4240h 
      mov dx,0fh 
      mov cx,0ah 
      call divdw 
mov ax,4c00h 
int 21h 
divdw: push ax
       mov ax,dx
       mov dx,0
       div cx       ;高位求商保存在ax中,余数保存在dx中
       mov bx,ax
       pop ax
       div cx
       mov cx,dx    ;余数保存在cx中
       mov dx,bx    ;高16位保存在dx中
       ret
code ends
end start


实验10.3
assume cs:code 
data segment
 db 10 dup (0)
data ends
code segment
start:mov ax,12666
      mov bx,data
      mov ds,bx
      mov si,0
      push ds
      push si
      call dtoc
      pop si
      pop ds
      mov dh,8
      mov dl,3
      mov cl,2
      call show_str
      mov ax,4c00h
      int 21h
dtoc: mov cx,0
      push cx
      mov bx,0ah
divb: mov dx,0
      div bx   ;求余
      add dx,30h
      push dx;把dx入栈
      mov cx,ax
      jcxz shang
      jmp short divb
shang: pop cx   
       mov ds:[si],cl  ;逆序存放
       jcxz back
       inc si
       jmp short shang
back:  ret
show_str: mov ax,0b800h  
          mov es,ax     ;显存的段地址
          mov al,160
          mul dh 
          mov bx,ax     ;行偏移
          mov al,2  
          dec dl  
          mul dl        ;列偏移
          add ax,bx
          mov di,ax     ;总偏移
work:     mov cl,[si]
          mov ch,0
          jcxz show_back
          mov es:[di],cx
          mov cl,2
          mov es:[di+1],cl
          add di,2
          inc si
          jmp short work
show_back: ret
code ends
end start



----------------------------------------
好累啊。。总算完成这三个实验了
评论次数(2)  |  浏览次数(620)  |  类型(汇编作业) |  收藏此文  | 

[  ce54605802   发表于  2009-09-15 23:13  ]

第一题,注意寄存器的冲突问题

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码