組合語言學習(三)

2021-08-29 04:09:44 字數 2091 閱讀 8717

1.順序結構(略)

2.分支結構

(1)設計乙個分段函式,x>0,y=1;x=0,y=0;x<0,y=-1.

.486

data segment use16

x dw ?

data ends

code segment use16

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

mov ax,x

or ax,ax ;自身異或操作不改變,改變的是標誌位

je zero ;如果是0的話跳轉到zero

jns plus ;如果是正數的話跳轉到plus

mov bl,0ffh;bl賦予初值-1

jmp halt ;如果是負數的話跳轉halt

zero:mov bl 0

jmp halt

plus:mov bl 1

halt: mov ah,4ch

int 21h

code ends

end start

(2)將bx暫存器的內容以二進位制的形式顯示在螢幕上。

.486

code segment use16

assume cs:code;

beg: mov bx,3456h

mov cx,16

mov al,'0'

rol bx,1 ;左移操作

jnc next ;如果是0的話,直接顯示

mov al,'1' ;非0,顯示1

next: mov ah,0eh

int 10h

loop last

mov ah,4ch

int 21h

code ends

end beg

(3)某科室9人,統計月收入在800-900間的人數,並且用十進位制表示。

.486

data segment use16

salary dw dup(?) ;如果定義為db,那麼最多工資為ffh,也就是256,顯然不符合題意

data ends

code segment use16

assunme ds:data,cs:code

begin:mov ax,data

mov ds,ax

mov bx,offset salary

mov cx,9

mov dl,0

again:mov ax,[bx]

cmp ax,800

jc next ;有進製,即小於800

cmp ax,900

ja next

inc dl ;計數加1

next: add bx,2 ;由於定義為dw型別,所以+2

loop again

add dl,30h ;由於要求十進位制顯示

mov ah,2

int 21h

mov ah,4ch

int 21h

code ends

end begin

3.迴圈結構

(1)求1-10的累加和

.486

data segment use16

sum dw ?

data ends

code segment use16

assume ds:data,cs:code

start porc far

beginn:push ds

xor ax,ax

push ax ;ax為0

mov ax,data

mov ds,ax

mov cx,10

mov ax,0

again:add ac,cx

loop again

mov sum,ax

retstart endp

code ends

end begin

(2)從buf單元開始為1個ascii碼字串,找到其中最大的送到螢幕顯示

組合語言學習(三)

這部分是王爽 組合語言 第7 8章重要內容的總結。主要分為四部分 1.用組合語言實現大小寫字母的轉換 and和or指令應用 2.組合語言二重迴圈的寫法 3.資料處理的兩個基本問題 4.實驗七的思路與 實驗七基本上是對之前學習內容的乙個總結應用,比較重要。大小寫字母轉換部分幫助理解ascii碼設計的奇...

組合語言學習筆記 三

ram 允許讀寫,斷電 資料 和 指令 丟失 rom 只允許讀取,斷電 資料 和 指令 不丟失 1 cpu和計算機各個部件之間的關係 通過給各個部件進行編號,例如 0 399記憶體條 401 699顯示卡 2 ram 允許讀寫,斷電 資料 和 指令 丟失 3 rom 只允許讀取,斷電 資料 和 指令...

組合語言學習

參考書籍 組合語言 王爽 著 清華大學出版社 選單導航 一 彙編基礎知識 二 暫存器和常見彙編指令演示 一 基礎知識 1 彙編指令是機器指令的助記符,同機器指令一一對應 2 每一種cpu都有自己的彙編指令集 3 cpu可以直接使用的資訊在儲存器中存放 4 在儲存器中指令和資料沒有任何區別,都是二進位...