王爽彙編 第三版 第7章問題7 9

2021-10-09 07:01:21 字數 1375 閱讀 2769

下面是給出的初始**

assume cs:codesg,ss:stacksg,ds:datasg

stacksg segment

dw 0,0,0,0,0,0,0,0

stacksg ends

datasg segment

db '1. display ' ;這裡是4*16個位元組

db '2. brows '

db '3. replace '

db '4. modify '

datasg ends

codesg segmnet

start:

codesg ends

end start

下面進行分析:如**所示 首字母是從左往右數第4個位置,由於程式編號是從0開始的,所以首字母的編號是3

0    1   2    3    4     5     6    7    8     9     a    b   c  d   e   f 1

.dis

play

2.br

ows3

.rep

lace

4.mo

dify

然後考慮 小寫字母怎麼轉換成大寫字母  ,這裡運用 and 指令   由於小寫字母和大寫字母在ascll碼上相差32d(十進位制)

列如 小寫 a 的ascll碼是97    而大寫的a是65    二進位制 兩者差   00100000b  

由於我們是把小寫變成大寫   所以是      and   al,11011111b

我們用兩層迴圈解決   內層解決一行中4個字母,外層解決向下迴圈4行。

mov ax,datasg

mov ds,ax

mov ax,stacksg

mov ss,ax

mov sp,16

mov bx,0

mov cx,4

mov si,3

s1:push cx

mov cx,4

s: mov al,[bx+si]

and al,11011111b

mov [bx+si],al

inc si

loop s

mov si,3

add bx,16

pop cx

loop s1

mov ax,4c00h

int 21h

執行**檢視執行後的資料段

成功到達預期設想。 

王爽彙編 第三版 第13章實驗13

1 編寫並安裝 int7ch 中段例程,功能為顯示乙個用0結束的字串,中斷例程安裝在0 200處。如下 assume cs code data segment db welcome to masm 0 data ends code segment start mov ax,0 mov es,ax m...

王爽彙編第三版 實驗七

assume cs code,ds data,es table data segment db 1975 1976 1977 1978 1979 1980 1981 1982 1983 db 1984 1985 1986 1987 1988 1989 1990 1991 1992 db 1993 1...

王爽 組合語言第三版實驗7

這個題目做了很久,使用了2中方法做出了結果,不過目前在單步除錯時還有點疑問。題目 power idea公司從1975成立一直到1995年的基本情況被定義到了datasg中,程式設計將datasg段中的資料寫入到table段中,並計算21年中的人均收入 取整 結果儲存到table段中 兩種方法我都使用...