centurion829

导航

第三次实验

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

 

 实验总结

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

 

posted on 2020-12-18 07:29  centurion829  阅读(64)  评论(2编辑  收藏  举报