組合語言習題十四

2021-10-05 11:37:38 字數 1829 閱讀 6433

(1)

mov al,2		;將2送入al,宣告埠將要被通訊

out 70h,al ;向70h埠中寫入al的值

in al,71h ;從71埠中讀出資料放到al中

(2)

從這裡我們可以看出,out 70h,al像是乙個呼叫宣告,表示要呼叫哪乙個埠,然後再通過71h in就是讀出,out就是寫入

assume cs:code

code segment

start: mov al,2

out 70h,al ; ① 要訪問的cmos ram單元位址為 (al)=2

mov al,0

out 71h,al ; ② 寫入資料到選定的cmos ram單元位址

mov ax,4c00h

int 21h

code ends

end start

mov bx,ax		;先將ax送入bx儲存

mov cl,3 ;移位位數大於1,用cl儲存

shl ax,cl ;將ax左移3位

shl bx,1 ;將bx左移1位

add ax,bx ;將二者相加送入ax中,即為(ax)=(ax)*10

**來自老梧桐

assume cs:code,ds:data,es:info_num

data segment

db '11/11/11 11:11:11$' ;預設字串

data ends

info_num segment

db 9,8,7,4,2,0 ;埠時間位址列表

info_num ends

code segment

start:

mov ax,data

mov ds,ax

mov si,0 ;ax:si初始指向字串首

mov ax,info_num

mov es,ax

mov bp,0 ;指向埠時間位址列表首

mov cx,6

s: push cx

mov al,es:[bp]

out 70h,al

in al,71h

mov ah,al ;暫存al

mov cl,4

shr ah,cl ;獲取bcd碼高四位

and al,00001111b ;獲取bcd碼低四位

add al,30h

add ah,30h

mov ds:[si],ah

mov ds:[si+1],al ;將時間資訊寫入字串指定位置

add si,3 ;指向字串下一寫入位置

pop cx

loop s

mov ah,2

mov bh,0

mov dh,12

mov dl,50

int 10h ;呼叫系統bios中斷例程設定游標位置

mov ah,9

mov dx,0 ;指向字串首

int 21h ;呼叫dos中斷例程顯示字串

mov ah,2

mov bh,0

mov dh,24

mov dl,0

int 10h ;重置游標位置

mov ax,4c00h

int 21h

code ends

end start

《組合語言》習題2

組合語言程式設計 測試題 一 填空 15分 1 計算機語言指令包括 2 資料暫存器組包括ax,bx,cx,dx 其中ax稱 bx稱為,cx 稱,dx 稱。四個段暫存器分別是,ip 暫存器中存放的是。4 資料的傳送的基本單位分為三種位元組 字 雙字,其中乙個整數位元組的表示範圍是 乙個整數字的表示範圍...

組合語言 AT T組合語言

這兩天的pwn題環境都是在linux中,採用的組合語言是 at t 格式。之前學習的是intel格式的8086彙編,今天學習了下at t組合語言。基於x86 架構的處理器所使用的彙編指令一般有兩種格式 操作intel格式at t格式 暫存器命名 push eax pushl eax 常數 立即運算元...

組合語言 練習題5 2

將從鍵盤輸入的n 個有符號數儲存到陣列 tab,找出 n個有符號數中絕對值大於 x的最小負奇數存放到 min單元,如果沒有找到則 min單元存放 0。在終端上顯示 min的絕對值。tab dd x1,xn x dd xx 無符號數,自己設定 min dd 要求 1 求資料 min的功能用子程式實現 ...