第九章 轉移指令的原理
;檢測點9.1
;1,程式如下。若要使程式中的jmp指令執行後,cs:ip指向程式的第一條指令,在
;data段中應該定義哪些資料?
assume cs:code
data segment
dw 0 ;測試結果dd,db,dw 都是指向code段的開始
data ends
code segment
start:
mov ax,data
mov ds,ax
mov bx,0
jmp word ptr [bx+1]
code ends
end start
;2,程式如下。
;補全程式,使jmp指令執行後,cs:ip指向程式的第一條指令
assume cs:code
data segment
dd 12345678h
data ends
code segment
start:
mov ax,data
mov ds,ax
mov bx,0
mov [bx],bx
mov [bx+2],cs
jmp dword ptr ds:[0] ;此題關鍵是在於dw型別jmp定址
code ends
end start
;3,用debug檢視記憶體,結果如下:
;2000:1000 be 00 06 00 00 00 .....
;則此時,cpu執行指令:
;mov ax,2000h
;mov es,ax
;jmp dword ptr es:[1000h]
;後,(cs)=0006,(ip)=00be
;檢測點9.2
;補全程式設計,利用jcxz指令,實現在記憶體2000h段中查詢第乙個值為0的位元組,找到
;後,將它的偏移位址儲存在dx中。
assume cs:code
code segment
start:
mov ax,2000h
mov ds,ax
mov bx,0
s: mov cl,ds:[bx] ;置cl位bx的值
mov ch, 0 ;置cx高位為0
jcxz ok ;如果cx為0就轉移,如果不為0向下執行
jmp short s
ok: mov dx,bx
mov ax,4c00h
int 21h
code ends
end start
;檢測點9.3
;補全程式設計,利用loop指令,實現在記憶體2000h段中查詢第乙個值為0的位元組,找到後,將它
的;偏移位址儲存在dx中
assume cs:code
code segment
start:
mov ax,2000h
mov ds,ax
mov bx,0
s: mov cl,[bx]
mov ch,0
inc cx
inc bx
loop s
ok: dec bx ;dec自減一
mov dx,bx
mov ax,4c00h
int 21h
code ends
end start
;實驗8分析乙個程式
assume cs:codesg
codesg segment
mov ax,4c00h
int 21h
start: mov ax,0
s: nop
nopmov di,offset s
mov si,offset s2
mov ax,cs:[si] ;把標號s2處的指令傳送到ax暫存器
mov cs:[di],ax ;把ax內容傳送到標號s處
s0: jmp short s
s1: mov ax,0
int 21h
mov ax,0
s2: jmp short s1
nopcodesg ends
end start
;實驗九
assume cs:code,ds:data
data segment
db 'w','e','l','c','o','m','e',' ','t','o',' ','m','a','s','m','!'
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov bx,071ah
mov bp,0
mov cx,15
s: mov al,ds:[bp]
mov ah,2h
mov es:[bx],ax
mov al,ds:[bp]
mov ah,24h
mov es:[bx+160],ax
mov al,ds:[bp]
mov ah,71h
mov es:[bx+320],ax
add bx,2
inc bp
loop s
mov ax,4c00h
int 21h
code ends
end start
王爽 組合語言 第九章實驗9
用單迴圈實現的.assume cs codesg,ds datasg datasg segment db welcome to masm db 02h,02h,02h,02h,02h,02h,02h,02h,42h,42h,42h,71h,71h,71h,71h,71h datasg ends co...
王爽《組合語言》第九章實驗9
這個實驗的內容不是太麻煩,雙層的迴圈 前幾章有示例 實驗9內容如下 我的 如下 assume cs codesg,ds datasg datasg segment dw 0 儲存外層的迴圈次數 db 2h 綠色字 db 24h 綠底紅字 db 80h 白底藍字 db 0c2h 紅底綠字 db wel...
王爽 組合語言 第九章 實驗八
輸入程式 assume cs codesg codesg segment mov ax,4c00h int 21h start mov ax,0 s nop nopmov di,offset s mov si,offset s2 mov ax,cs si mov cs di ax s0 jmp sh...