王爽彙編第九章節作業

2021-05-23 00:08:08 字數 2728 閱讀 9196

第九章 轉移指令的原理

;檢測點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...