0
点赞
收藏
分享

微信扫一扫

汇编语言程序设计实验8+9(王爽)

快乐小鱼儿_9911 2022-04-13 阅读 77
java

实验八:

assume cs:codesg

codesg segment

    mov ax,4c00h
    int 21h
start:
    mov ax,0
s:  nop;nop占一字节
    nop;jmp short s1

    mov di,offset s
    mov si,offset s2
    mov ax,cs:[si]
    mov cs:[di],ax;将s2处的2字节指令写到s处

s0: jmp short s;跳转到s处

s1: mov ax,0
    int 21h
    mov ax,0

s2: jmp short s1;机器指令:EBF6
    nop

codesg ends

end start

标号s处的(IP)=08H
中间4条mov指令将s2处的机器指令EBF6写进s处
s0指令执行,IP跳转到s处,此时(IP)=08H,CPU读取s处的机器指令EBF6,然后(IP)+= 2,(IP)=0AH。
执行指令,因为jmp short是用需要转移的位移来实现跳转,F6补码,表示-10,意思是从当前位置回退10个字节,即(IP)-= 10,此刻(IP)= 0,
执行mov ax,4c00H
在这里插入图片描述
实验九:
中间位置在12行,13行,14行;对于列,64+32+64=160

assume cs:code

data segment
db 'welcome to masm!'
db 02h,24h,71h
data ends

stack segment
dw 8 dup(0)
stack ends

code segment
start:
    mov ax,data
    mov ds,ax

    mov ax,0B87cH;0B80H+160*12+64
    mov es,ax

    mov ax,stack
    mov ss,ax
    mov sp,8

    mov di,0
    mov cx,3
    mov bx,10h
    

s:  mov ah,ds:[bx] ;颜色赋值
    push cx
    push bx

    mov cx,16;内循环次数
    mov bx,0;显存空间中每个字符偏移量
    mov si,0;data段里字节偏移量

s1: mov al,ds:[si]
    mov es:[di+bx],ax
    inc si
    add bx,2
    loop s1

    pop bx
    pop cx
    add di,0a0h
    inc bx
    loop s

    mov ax,4c00h
    int 21h

code ends

end start

在这里插入图片描述
不知为啥不在中间,感觉是执行-g带来的影响

举报

相关推荐

0 条评论