• 汇编实验五


    实验任务(1)~(4):

    接下来是实验任务五

    源代码如下:

    assume cs:code
    a1 segment
      db 1,2,3,4,5,6,7,8
    a1 ends
    
    b1 segment
      db 1,2,3,4,5,6,7,8
    b1 ends
    
    c1 segment   
      db 0,0,0,0,0,0,0,0
    c1 ends	
    code segment
    start:
          mov ax,a1
          mov ds,ax
          mov bx,0
          mov ax, c1
          mov es,ax
          mov cx,8
    s1:   
         mov ax,[bx]
         mov es:[bx],ax
         inc bx  
    loop s1
    
      
         mov ax,b1
         mov ds,ax
         mov bx,0
    
         mov ax,c1
         mov es,ax
         mov cx,8
    s2:
          mov al,[bx]
          mov ah,0
          add es:[bx],ax
          inc bx
    loop s2
    
    
    
    mov ax,4c00h
    int 21h
    code ends
    end start
    

    实验前查看数据如下:

    试验后查看数据如下:

    所以实现了数据相加的功能

    实验任务六:

    用push指令将a段中的前8个字型数据,逆序存储到b段中

    汇编代码如下:

    assume cs:code
    a segment
      dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
    a ends
    
    b segment
      dw 8 dup(0)
    b ends
    
    code segment
    start: 
    mov ax,a
    mov ds,ax
    mov bx,0
    
    mov ax, b
    mov ss,ax
    mov sp,10h      
    mov cx,8
    
    s:
        push [bx]
        add bx,2
    loop s
    
    mov ax,4c00h
    int 21h
    code ends
    end start
    

    push操作前,查看逻辑段b的8个字单元信息截图:

    执行后:

    总结与体会:

    写实验任务五时,实现加法一开始直接用:

    s2:
          mov ax,[bx]
          add es:[bx],ax
          inc bx
    loop s2
    

     得出实验结果是错的

    后改为:

    s2:
          mov al,[bx]
          mov ah,0
          add es:[bx],ax
          inc bx
    loop s2
    

     得到正确答案

    要分清字节与字的区别

     

     

  • 相关阅读:
    centos 安装netstat
    du 常见的命令
    CentOS7 安装Python3.6.8
    Alpine安装telnet
    TypeError: 'NoneType' object is not callable
    docker中删除dead状态的容器
    监控进程,线程shell脚本
    pyinstaller打包py成exe后音乐文件播放异常pygame.error failed to execute script
    lambda expressions
    Domain logic approaches
  • 原文地址:https://www.cnblogs.com/wtblogwt/p/10011026.html
Copyright © 2020-2023  润新知