首页 > 其他 > 详细

第三次实验

时间:2020-12-18 10:11:43      阅读:29      评论:0      收藏:0      [点我收藏+]

mov cx, 5//将Nuist变为大写,循环5次

mov si, 0
mov di, 0f00h
s: mov al, [si]
and al, 0dfh//将小写变为大写
mov es:[di], al 
mov al, [5+si]//将大写的放入es中
mov es:[di+1], al//在字母后放入2
inc si
add di, 2
loop s

15到25行内容如上所示技术分享图片

 

 

 debug如上图所示

技术分享图片

 

这里我将db 5 dup(2)改为db 5 dup(3)可见NUIST从绿色变为如图所示的颜色,由此可知字面意思的插入数字实际是更改了字母颜色

第二项实验

assume ds:data,cs:code
data segment
        db 23,0,50,0,66,0,71,0,35
data ends
code segment
start:
        mov ax,data
        mov ds,ax
        mov bx,0
        mov cx,5
        mov dh,10

        s:mov ax,[bx]
        div dh
        add al,30h
        mov [bx],al
        inc bx
        add ah,30h
        mov [bx],ah
        inc bx
        loop s
        
        mov cx,10
        mov bx,0
        s0:mov ah,2
        mov dl,[bx]
        int 21h
        inc bx
        loop s0
        mov ah,4ch
        int 21h
code ends
end start

如上所述为我的代码

技术分享图片

输出结果图

实验三

反汇编调试截图,即:在debug中,执行到程序返回前的调试截图。
在CPU执行程序,程序返回前,data段中数据为: 0123H,0456H,0789H,0ABCH,0DEFH,0FEDH,0CABH,0987H。
技术分享图片

 

 

由上图可知:CPU执行程序,程序返回前,cs=076CH,ss=076BH,ds= 076AH

设程序加载后,code段的段地址为X,则data段的段地址为 X-2,stack段的段地址为X-1 。

实验四

CPU执行程序,程序返回前,data段中的数据为:0123H,0456H
反汇编调试截图,即:在debug中,执行到程序返回前的调试截图。
技术分享图片

 

 

CPU执行程序,程序返回前,cs=076CH,ss=076BH,ds=076AH。
 设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1。

如果段中的数据占N个字节,则程序加载后,该段实际占有的空间为(N/16+1)*1

实验5

CPU执行程序,程序返回前,data段中的数据为:0123H,0456H

反汇编调试截图,即:在debug中,执行到程序返回前的调试截图。

技术分享图片

 技术分享图片

CPU执行程序,程序返回前,cs=076AH,ss=076EH,ds=076DH。

设程序加载后,code段的段地址为X,则data段的段地址为X+3,stack段的段地址为X+4

实验6

只有任务5可以执行,任务3和任务4开头是数据会被当成指令读,而任务5会先执行代码段,所以不会出问题

实验7

反汇编

技术分享图片

 

 

 运行至程序返回前,查看逻辑段c的数据

技术分享图片

 

 

实验8

技术分享图片

 

 实验总结

程序设计时总下意识用寄存器,但寄存器数量很少且各有作用,需要熟练运用内存存储

 

第三次实验

原文:https://www.cnblogs.com/centurion/p/14153072.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!