組合語言(第三版)王爽著(實驗九)根據材料程式設計

2021-09-20 18:53:41 字數 2001 閱讀 2917

實驗內容、程式清單及執行結果

程式設計:在螢幕中間分別顯示綠色,綠底紅色,白底藍色的字串『welcome to masm!』。

**及分析如下:

data segment

db 'welcome to masm!'

data ends

stack segment;用於逆序暫存生成的結果,相當於中轉

db 32 dup (0)

stack ends

code segment

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

start:

mov ax,data

mov ds,ax

sub bx,bx

mov ax,stack

mov ss,ax

mov sp,32

mov cx,7

;設定welcome

s:   mov al,ds:[bx]

mov ah,00000010b

push ax;暫存入棧,後期逆序輸出螢幕

inc bx

loop s

;設定空格

mov al,ds:[bx]

mov ah,0

push ax;暫存入棧,後期逆序輸出螢幕

inc bx

;設定to

mov cx,2

a:   mov al,ds:[bx]

mov ah,00100100b

push ax;暫存入棧,後期逆序輸出螢幕

inc bx

loop a

;設定空格

mov al,ds:[bx]

mov ah,0

push ax;暫存入棧,後期逆序輸出螢幕

inc bx

;設定masm!

mov cx,5

w:  mov al,ds:[bx]

mov ah,01110001b

push ax

inc bx

loop w

;使螢幕偏移量為螢幕**

mov ax,0b800h

mov ds,ax

mov bx,2014;使螢幕偏移量為螢幕**

;從棧中把資料逆序讀取到螢幕

mov cx,16

f:    pop ds:[bx]

sub bx,2

loop f

mov ax,4c00h

int 21h

code ends

end start

執行截圖:

這是乙個現學現用的實驗題,但是邏輯都是以前的。

從大方面看,對每個單詞的操作,實現每個單詞不同的效果。從小方面看,每實現乙個字元的效果就暫存到棧中,但完成了資料的處理,然後定位螢幕顯示位置,將棧中的資料逆序的輸出到螢幕中,完成實驗要求

其它實驗:

組合語言(第三版)王爽著(實驗一)檢視cpu和記憶體

組合語言(第三版)王爽著(實驗二)用機器指令和彙編指令程式設計

組合語言(第三版)王爽著(實驗三)程式設計、編譯、連線、跟蹤

組合語言(第三版)王爽著(實驗四)[bx]和loop的使用

組合語言(第三版)王爽著(實驗五)編寫、除錯具有多個段的程式

組合語言(第三版)王爽著(實驗六)實踐課程中的程式

組合語言(第三版)王爽著(實驗七)定址方式在結構化資料訪問中的應用

組合語言(第三版)王爽著(實驗八)分析乙個奇怪的程式

組合語言(第三版)王爽著(實驗九)根據材料程式設計

組合語言(第三版)王爽著(實驗十)編寫子程式

組合語言(第三版)王爽著(實驗十一)編寫子程式

組合語言(第三版)王爽著(實驗十二)編寫0號中斷的處理程式

dosbox+masm搭建彙編環境

《組合語言(第三版)》王爽,實驗九

不知道為什麼,在win7下用的emu8086,顯示會錯位,到不了中間位置 在網上找了下別人的 發現即使是在別人那裡能正常顯示在中間位置,複製到我這裡都會顯示為上圖所示的樣子。下面是 定義資料段的時候為了後面不用將ascii碼和屬性分開讀取,就定義成如下這樣比較繁瑣的形式了。其實做的時候第一時間沒想到...

王爽 組合語言 第三版 實驗9 根據材料程式設計

在螢幕中間分別顯示綠色,綠底紅色,白底藍色的字串 welcome to masm 要顯示的字串內容 db welcome to masm data ends code segment start 設定資料段位址 mov ax,data mov ds,ax mov ax,0b800h b800h顯示緩...

《組合語言》王爽第三版 實驗9

datas segment 此處輸入資料段 db w 00000010b,e 00000010b,l 00000010b,c 00000010b,o 00000010b db m 00000010b,e 00000010b,0,t 00100100b,o 00100100b,0 db m 01110...