彙編之實現乙個迴圈程式 loop和cx

2022-09-24 02:36:08 字數 1230 閱讀 8305

assume cs:code,ds:data,ss:stack

data segment

db'welcome to masm!';定義要顯示的字串(共16位元組)

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,stack

mov ss,ax

mov sp,10h

xor bx,bx;bx清零,用來索引顏色

mov ax,0b872h;算出螢幕第12行中間的視訊記憶體的段起始位置放入ax中

mov cx,3;s3迴圈控制行數,要顯示三個字串外迴圈為3次

s3: push cx;三個進棧操作為外迴圈s3儲存相關暫存器的值

push ax;以防止它們的值在內迴圈中被破壞

push bx

mov es,ax;此時es為螢幕第12行中間的視訊記憶體的段起始位置

mov si,0;si用來索引**列的字元

mov di,0;di用來定位目標列

mov cx,10h

;s1迴圈控制存放的字元,乙個字串中含有10h個位元組內迴圈為10h次

s1: mov al,ds:[si]

mov es:[di],al

inc si

add id,2

loop s1;吃迴圈實現偶位址中存放字元

mov di,1;設定di的值為1,為在視訊記憶體奇數字址中存放字元的顏色屬性做準備

pop bx

mov al.ds:[bx+10h];取消顏色屬性

inc bx

mov cx,10h;第二個內迴圈也為10h

s2: mov es:[di],al

add di 2

loop s2;此迴圈實現奇數字址存放字元的顏色屬性

;以下4句為下一趟外迴圈做準備

pop ax

add ax,0ah;將視訊記憶體的段位址起始位址設定為當前行的下一行

;[在段位址中甲0ah,相當於在偏移位址中加了0a0h(=160d)]

pop cx

loop s3

mov ax,4c00h

int 21h

code ends

end start

乙個彙編小程式

assume cs code,ds data,es table,ss stack stack segment stack db 16 dup 0 stack ends data segment db 1975 1976 1977 1978 1979 1980 1995 dd 16,22,382,13...

JavaScript之實現乙個簡單的Vue

原文出處 wclimb vue的使用相信大家都很熟練了,使用起來簡單。但是大部分人不知道其內部的原理是怎麼樣的,今天我們就來一起實現乙個簡單的vue 實現之前我們得先看一下object.defineproperty的實現,因為vue主要是通過資料劫持來實現的,通過get set來完成資料的讀取和更新...

JavaScript之實現乙個簡單的Vue

vue的使用相信大家都很熟練了,使用起來簡單。但是大部分人不知道其內部的原理是怎麼樣的,今天我們就來一起實現乙個簡單的vue object.defineproperty 實現之前我們得先看一下object.defineproperty的實現,因為vue主要是通過資料劫持來實現的,通過get set來...