(1)
assume cs:code
data segment
db 'welcome to masm! ',0
data ends
code segment
start:
;設定ds:[si]指向源位址,即cs:[do0]
mov ax,cs
mov ds,ax
mov si,offset do7c
;設定es:[di]目的位址
mov ax,0
mov es,ax
mov di,200h
;設定cx為傳輸長度
mov cx,offset do7c_end-offset do7c
cld ;設定傳輸方向為正
rep movsb
;設定7c中斷向量表指向0:200h
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
;測試資料,dh=行號,dl=列號,cl=顏色
mov dh,10
mov dl,10
mov cl,2
mov ax,data
mov ds,ax
mov si,0
;中斷例程
int 7ch
;結束程式
mov ax,4c00h
int 21h
do7c:
push ax
push si
push es
push di
push dx
push cx
;es:di指向輸出快取區,di=ah*16+dl*2
mov ax,0b800h
mov es,ax
mov al,0a0h
mul dh
mov di,ax
mov al,2
mul dl
add di,ax
;放置資料
show:
mov al,ds:[si]
cmp al,0
je ok
mov es:[di],al
inc si
inc di
mov es:[di],cl
inc di
jmp short show
ok:
pop cx
pop dx
pop di
pop es
pop si
pop ax
iret
do7c_end: nop ;**段結尾,便於計算7ch例程的長度
code ends
end start
(2)
assume cs:code
code segment
start: ;7ch中斷例程的安裝程式
mov ax, cs
mov ds, ax
mov si, offset lp ;將ds:si指向源位址(captial的機器碼)
mov ax, 0000h
mov es, ax
mov di, 200h ;將es:di指向目的位址(0:200h向量表中)
mov cx, offset lpend - offset lp ;設定傳輸長度
cld ;傳輸方向為正
rep movsb ;位元組傳輸
;設定中斷向量表,使7ch條目中斷向量指向0000:200h
mov ax, 0000h
mov es, ax
mov word ptr es:[7ch*4], 200h
mov word ptr es:[7ch*4+2], 0000h
mov ax, 4c00h
int 21h
lp: push bp ;將bp這個ss棧的偏址儲存
mov bp, sp ;將當前棧頂指標值送入到bp
dec cx ;呼叫一次7ch,(cx)-1
jcxz lpret ;與(cx)值判斷,如果為0,跳轉到lpret標號
add [bp+2], bx ;修改ss棧中的從棧頂向下第2個單元的值
lpret: pop bp ;恢復bp值
iret ;返回到呼叫處。
lpend: nop ;**段結尾,便於計算7ch例程的長度。
code ends
end start
(3)
;程式設計,分別在螢幕的2,4,6,8行顯示4句英文詩
assume cs:code
code segment
s1: db 'good ,better,best,','$'
s2: db 'never let it rest,','$'
s3: db 'till good is better,','$'
s4: db 'and better ,best.','$'
s : dw offset s1,offset s2,offset s3,offset s4
row:db 2,4,6,8
start:mov ax,cs
mov ds,ax
mov bx,offset s
mov si,offset row
mov cx,4
ok: mov bh,0
mov dh,[si] ;dh放置行號
mov dl,10 ;dl放置列號
mov ah,2 ;呼叫10h號中斷例程的二號子例程
int 10h
mov dx, [bx] ;dx中存放偏移位址
mov ah,9 ;呼叫21h號中斷例程的9號子例程
int 21h
inc si ;準備下一次迴圈
add bx,2
loop ok
mov ax,4c00h
int 21h
code ends
end start
組合語言實驗1 3
輸入10個字元,並反序輸出 data segment dd1 db 10 dup data ends code segment assume cs code,ds data start mov ax,data mov ds,ax lea bx,dd1 dd1的有效位址放入bx中 mov cx,0ah...
《組合語言》實驗 實驗
注意 db定義位元組型別變數,乙個位元組資料百佔1個位元組單度元,讀完乙個,偏移量加1 dw定義字型別變問量,乙個字資料佔2個位元組單元,讀完乙個,權偏移量加2 dd定義雙字型別變數版,乙個雙字資料佔4個位元組單元,讀完乙個,權偏移量加4 一開始用了乙個暫存器表示所有項,但是後來發現四個資料佔的位元...
組合語言實驗1 2
小寫字母變為大寫字母 data segment notic db please input the word 0ah,0dh data ends code segment assume cs code,ds data start mov ax,data mov ds,ax 填入ds mov cx,1...