實驗3 轉移指令跳轉原理及其簡單應用程式設計

2022-09-10 07:27:09 字數 3290 閱讀 4421

call指令的跳轉原理:

cpu 執行 call 指令時,進行兩步操作:

將當前的 ip 或 cs 和 ip 壓入棧中;

轉移。

根據該原理進行分析:

使用debug進行測試:

發現猜想正確。

assume cs:code, ds:data

data segment

x db 99,72,85,63,89,97,55

len equ $-x

data ends

code segment

start:

mov ax,data

mov ds,ax

mov bl,byte ptr 10;這個除數10應該為8位的資料,故採用byte形式。

mov si,offset x

mov cx,len

dec cx

s: call printnumber

call printspace

inc si

loop s

mov ax,4c00h

int 21

printnumber:

mov al,[si]

mov ah,0h

div bl;將al中的數除10,al中獲得了商(實際上的十位數),ah中獲得了餘數(實際上的個位數)。

mov dh,ah;ah在中斷顯示中必須為2,所以先把資料放在dh中。

mov ah,2

mov dl,al

or dl,30h;將ascii轉為ascii中對應的數字

int 21h;顯示十位數

mov dl,dh

or dl,30h

int 21h;顯示個位數

retprintspace:

mov ah,2

mov dl,' '

int 21h;輸出乙個空格

mov bh,0;設定了首字元位址指向x,長度為len,顏色黑底綠字,指定第一行

call printstr

mov ax, data;直接初始化

mov ds, ax

mov si,offset x

mov cx,len

mov bl,00001100b

mov bh,24;設定了首字元位址指向x,長度為len,顏色黑底紅字,指定第25行

call printstr;再次呼叫

mov ax, 4c00h

int 21h

printstr:

mov al,160

mul bh;在80*25顯示模式中,螢幕上每行有160個位元組,則將bh乘160即可讓bh代表螢幕上第幾行。

mov di,ax

s: mov al,[si]

mov es:[di],al;ascii碼

mov es:[di+1],bl;這個字元的顯示顏色

inc si

add di,2;轉到兩個位元組後下乙個顯示字元的位置

如果將**中 line 33 的 160 改為 1 ,則紅色的 try 會顯示在第一行的第 12(24/2)個字元位。

assume cs:code, ds:data

data segment

stu_no db '201983290518'

len = $ - stu_no

data ends

code segment

start:

mov ax,data

mov ds,ax

mov ax,0b800h

mov es,ax

call printbluescreen;先畫藍屏底子

mov di,0f00h;在最後一行的第一位開始畫橫線

call printlines

call printnum

call printlines

mov ax,4c00h

int 21h

printbluescreen:

mov di,0h

mov cx,007d0h;整個螢幕可以顯示2000個字元,換算成八進位制就是07d。

mov al,00010000b

s: mov es:[di+1],al

add di,2

loop s

retprintlines:

mov al,0002dh;橫線的ascii碼

mov ah,00011111b

mov cx,00022h;34次

實驗3 轉移指令跳轉原理及其簡單應用程式設計

目錄 line27,彙編指令loop s1 跳轉時,是根據位移量跳轉的。通過debug反彙編,檢視其機器碼,分析其跳轉的位移量是多少?位移量數值以十進位制數值回答 從cpu的角度,說明是如何計算得到跳轉後標號s1其後指令的偏移位址的。line44,彙編指令loop s2 跳轉時,是根據位移量跳轉的。...

9 轉移指令的原理

1 可以修改ip,或同時修改cs和ip的指令統稱為轉移指令。概括的講,轉移指令就是可以控制cpu執行記憶體中某處 的指令,8086cpu的轉移行為有兩種 1 只修改ip時,稱為段內轉移,比如 jmp ax 2 同時修改cs和ip時,稱為段間轉移,比如 jmp 1000 0 段內轉移又分為 1 短轉移...

9 轉移指令的原理

1.可以修改ip,或同時修改cs和ip的指令統稱轉移指令。概括地講,轉移指令就是可以控制cpu執行記憶體中某處 的指令。2.8086cpu的轉移行為有以下幾種 1 只修改ip時,稱為段內轉移。例如 jmp ax 2 同時修改cs和ip時,成為 段間轉移。例如 jmp 1000 0 3.由於轉移指令對...