回 帖 发 新 帖 刷新版面

主题:哪个大哥大姐来帮忙弄弄注释,不太看的懂~!

1、把某个十进制数ASCII码串转换为对应非压缩BCD和压缩BCD的示例程序
data      segment                            
msg       db "Input a string number:$"  
buf       db 10
nu        db 0
string    db 10 dup("$")
unpackBCD db 10 dup(0)                       
packBCD   db 5 dup(0)                        
data      ends
code      segment                            
          assume cs:code,ds:data
start:    mov ax,data
          mov ds,ax
      mov dx,offset msg
      mov ah,09h
      int 21h
      mov ah,0ah
      lea dx,buf
      int 21h
      xor ch,ch              
      mov cl,nu
      lea si,string
      lea di,unpackBCD          
lp:       mov al,[si]
          and al,0fh                        
      mov [di],al
      inc si
      inc di
      loop lp
      lea si,unpackBCD
      lea di,packBCD
      xor ch,ch
      mov cl,nu
      shr cx,1
lp1:      mov bl,[si]
          shl bl,1
      shl bl,1
      shl bl,1
      shl bl,1
      mov al,bl
      inc si
      mov bl,[si]
      or al,bl
      mov [di],al
      inc si
      inc di
      loop lp1
      mov ah,4ch
      int 21h
code      ends
          end start
2、设已在地址F000:0000H开始的内存区域安排了100个字节的无符号8位2进制数。请编写一个程序求它们的和,并转换为对应十进制数的ASCII码串。
data     segment
pr1      db "Sum:$"
buf      db 5 dup("$") 
data     ends
code     segment
         assume cs:code,ds:data
start:   mov ax,0f000h
         mov ds,ax
     xor ax,ax
     mov cx,64h
     xor si,si
lp:      mov bl,[si]
         xor bh,bh
         add ax,bx
         inc si
     loop lp
     mov bx,data
     mov ds,bx
     lea si,buf
     mov cx,0404h
lp1:     rol ax,cl
     mov dl,al
     and dl,0fh
     cmp dl,09h
     jbe next
     add dl,07h
next:    add dl,30h
         mov [si],dl
     inc si
     dec ch
     jne lp1
     lea dx,pr1
     mov ah,09h
     int 21h
     lea dx,buf
     mov ah,09h
     int 21h
     mov dl,"H"
     mov ah,02h
     int 21h         
     mov ah,4ch
     int 21h
code     ends
         end start
3、设从地址F000:0000H开始的内存区域是缓冲区,存放了一组单字节的正数或负数,以0结尾。请编写一个程序,确定其中最大的正数和最小的负数。
data     segment
pr1      db 0ah,0dh,"Max Plus:$"
pr2      db 0ah,0dh,"Min Negative:$"
plus     db 0 
nega     db 0
data     ends
code     segment
         assume cs:code,ds:data
start:   mov ax,0f000h
         mov es,ax
     mov ax,data
     mov ds,ax
     xor ax,ax
     mov cx,0400h
     xor si,si
     mov bx,0000h
lp:      mov al,es:[si]
         cmp al,bh
     jle next1
     mov bh,al 
     jmp next2        
next1:   cmp al,bl
         jge next2
     mov bl,al    
next2:   loop lp
     mov plus,bh
     mov nega,bl    
     mov ah,09h
     mov dx,offset pr2
     int 21h
     mov bl,nega
     call disp 
         mov ah,09h
     mov dx,offset pr1
     int 21h
     mov bl,plus
     call disp
     mov ah,4ch
     int 21h
disp     proc
     mov cx,8
lp1:     rol bl,1
         jc next3
     mov dl,30h
     mov ah,02h
     int 21h
     jmp next
next3:     mov dl,31h
         mov ah,02h
     int 21h
next:     loop lp1
         mov dl,"H"
     mov ah,02h
     int 21h
     ret
disp     endp         
code     ends
         end start 
4、设从地址F000:0000H开始的1K字节内存区域是缓冲区,请写一个可收集该区域内所以子串"OK"开始地址的程序。
data     segment
pr1      db 0dh,0ah,"OK address:$"
buf      db 5 dup("$") 
data     ends
code     segment
         assume cs:code,ds:data
start:   mov ax,data
     mov ds,ax
     mov bx,0a000h
         mov es,bx
     mov ax,'OK'
     mov cx,10h
     xor di,di
     cld
     rep stosw
     xor si,si
     mov cx,0400h
     shr cx,1
     mov bp,'OK'
lp:      cmp bp,es:[si]
         jne next1
     mov bx,si
     call disp          
next1:     inc si
         inc si
     loop lp
     mov ah,4ch
     int 21h         
disp     proc
     lea di,buf
     mov cx,0404h
lp1:     rol bx,cl
     mov dl,bl
     and dl,0fh
     cmp dl,09h
     jbe next
     add dl,07h
next:    add dl,30h
         mov [di],dl
     inc di
     dec ch
     jne lp1
     lea dx,pr1
     mov ah,09h
     int 21h
     lea dx,buf
     mov ah,09h
     int 21h
     mov dl,"H"
     mov ah,02h
     int 21h         
     ret
disp     endp 
code     ends
         end start
注:以上几题均来自《汇编原理程序设计教程》(P109)
    麻烦各位帮个忙,这几个程序是老师写了供参考用的,不过小弟实在看不懂,刚学汇编,属于菜鸟级的,还望各位大哥能帮帮忙哦~!注释尽量写的详尽一点,在此小弟先谢过啦~!
    可以把注释后的程序发到我邮箱(yuanlaibucuo@126.com),也可以跟帖贴出来~!

回复列表 (共1个回复)

沙发

大哥们帮帮忙啊,后天要检查了,看不懂啊...
自己顶下先~!

我来回复

您尚未登录,请登录后再回复。点此登录或注册