日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第四章——自编解析与答案

發布時間:2024/10/5 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第四章——自编解析与答案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

4.1 指出下列指令的錯誤:
(1) MOV AH, BX ;寄存器類型不匹配

(2) MOV [BX], [SI] ;不能都是存儲器操作數
(3) MOV AX, [SI][DI] ;[SI]和[DI]不能一起使用
(4) MOV MYDAT [BX][SI], ES:AX ;AX寄存器不能使用段超越
(5) MOV BYTE PTR [BX], 1000 ;1000超過了一個字節的范圍
(6) MOV BX, OFFSET MYDAT [SI] ;MYDAT [SI]已經是偏移地址,不能再使用OFFSET
(7) MOV CS, AX ;CS不能用作目的寄存器
(8) MOV ECX, AX ;兩個操作數的數據類型不同
答:見注釋。
4.2 下面哪些指令是非法的?(假設OP1,OP2是已經用DB定義的變量)
(1) CMP 15, BX ;錯,立即數不能作為目的操作數
(2) CMP OP1, 25
(3) CMP OP1, OP2 ;錯,不能都是存儲器操作數
(4) CMP AX, OP1 ;錯,類型不匹配,應為CMP ax,
word ptr op1
答:見注釋。
4.3 假設下列指令中的所有標識符均為類型屬性為字的變量,請指出下列哪些指令是非法的?它們的錯誤
是什么?
(1) MOV BP, AL ;錯,寄存器類型不匹配
(2) MOV WORD_OP [BX+4*3][DI], SP
(3) MOV WORD_OP1, WORD_OP2 ;錯,不能都是存儲器操作數
(4) MOV AX, WORD_OP1[DX] ;錯,DX不能用于存儲器尋址
(5) MOV SAVE_WORD, DS
(6) MOV SP, SS:DATA_WORD [BX][SI]
(7) MOV [BX][SI], 2 ;錯,[BX][SI]未指出數據類型
(8) MOV AX, WORD_OP1+WORD_OP2
(9) MOV AX, WORD_OP1-WORD_OP2+100
(10) MOV WORD_OP1, WORD_OP1-WORD_OP2
答:見注釋。
4.4 假設VAR1和VAR2為字變量,LAB為標號,試指出下列指令的錯誤之處:

(1) ADD VAR1, VAR2 ;不能都是存儲器操作數
(2) SUB AL, VAR1 ;數據類型不匹配
(3) JMP LAB [SI] ;LAB是標號而不
是變量名,后面不能加[SI]
(4) JNZ VAR1 ;VAR1是變量而不是標號
(5) JMP NEAR LAB ;應使用NEAR PTR
答:見注釋。
4.5 畫圖說明下列語句所分配的存儲空間及初始化的數據值。
(1) BYTE_VAR DB ‘BYTE’,12,-12H,3 DUP(0,?,2 DUP(1,2),?)
(2) WORD_VAR DW 5 DUP(0,1,2),?,-5,‘BY’,‘TE’,256H
答:答案如下圖所示。
4.6 試列出各種方法,使匯編程序把5150H存入一個存儲器字中(如:DW 5150H)。
答:DW 5150H
DB 50H, 51H
DB ‘PQ’
DW ‘QP’
ORG 5150H
DW $
4.7 請設置一個數據段DATASG,其中定義以下字符變量或數據變量。
(1) FLD1B為字符串變量:‘personal computer’;
(2) FLD2B為十進制數字節變量:32;
(3) FLD3B為十六進制數字節變量:20;
(4) FLD4B為二進制數字節變量:01011001;
(5) FLD5B為數字的ASCII字符字節變量:32654;
(6) FLD6B為10個零的字節變量;

(7) FLD7B為零件名(ASCII碼)及其數量(十進制數)的表格:
PART1 20
PART2 50
PART3 14
(8) FLD1W為十六進制數字變量:FFF0;
(9) FLD2W為二進制數的字變量:01011001;
(10) FLD3W為(7)零件表的地址變量;
(11) FLD4W為包括5個十進制數的字變量:5,6,7,8,9;
(12) FLD5W為5個零的字變量;
(13) FLD6W為本段中字數據變量和字節數據變量之間的地址差。
答:DATASG SEGMENT
FLD1B DB ‘personal computer’
FLD2B DB 32
FLD3B DB 20H
FLD4B DB 01011001B
FLD5B DB ‘32654’
FLD6B DB 10 DUP (0)
FLD7B DB ‘PART1’, 20
DB ‘PART2’, 50
DB ‘PART3’, 14
FLD1W DW 0FFF0H
FLD2W DW 01011001B
FLD3W DW FLD7B
FLD4W DW 5, 6, 7, 8, 9
FLD5W DW 5 DUP (0)
FLD6W DW FLD1W-FLD1B
DATASG ENDS
4.8 假設程序中的數據定義如下:
PARTNO DW ?

PNAME DB 16 DUP (?)
COUNT DD ?
PLENTH EQU $-PARTNO
問PLENTH的值為多少?它表示什么意義?
答:PLENTH=22=16H,它表示變量PARTNO、PNAME、COUNT總共占用的存儲單元數(字節數)。
4.9 有符號定義語句如下:
BUFF DB 1, 2, 3, ‘123’
EBUFF DB 0
L EQU EBUFF - BUFF
問L的值是多少?
答:L=6。
4.10 假設程序中的數據定義如下:
LNAME DB 30 DUP (?)
ADDRESS DB 30 DUP (?)
CITY DB 15 DUP (?)
CODE_LIST DB 1, 7, 8, 3, 2
(1) 用一條MOV指令將LNAME的偏移地址放入AX。
(2) 用一條指令將CODE_LIST的頭兩個字節的內容放入SI。
(3) 用一條偽操作使CODE_LENGTH的值等于CODE_LIST域的實際長度。
答:(1) MOV AX, OFFSET LNAME
(2) MOV SI, WORD PTR CODE_LIST
(3) CODE_LENGTH EQU $ - CODE_LIST ;此語句必須放在CODE_LIST語句之后
4.11 試寫出一個完整的數據段DATA_SEG,它把整數5賦予一個字節,并把整數-1,0,2,5和4放在10字數
組DATA_LIST的頭5個單元中。然后,寫出完整的代碼段,其功能為:把DATA_LIST中頭5個數中的最大值和最小
值分別存入MAX和MIN單元中。
答:DATA_SEG SEGMENT
NUM DB 5
DATA_LIST DW -1, 0, 2, 5, 4, 5 DUP (?)
MAX DW ?

MIN DW ?
DATA_SEG ENDS
;----------------------------------------------------------------
CODE_SEG SEGMENT
MAIN PROC FAR
ASSUME CS: CODE_SEG, DS: DATA_SEG
START: PUSH DS ;設置返回DOS
SUB AX, AX
PUSH AX
MOV AX, DATA_SEG ;給DS賦值
MOV DS, AX

MOV CX, 4 ;程序段開始
LEA BX, DATA_LIST
MOV AX, [BX]
MOV MAX, AX
MOV MIN, AX
ROUT1: ADD BX, 2
MOV AX, [BX]
CMP AX, MAX
JNGE ROUT2
MOV MAX, AX
ROUT2: CMP AX, MIN
JNLE ROUT3
MOV MIN, AX
ROUT3: LOOP ROUT1 ;程序段結束
RET
MAIN ENDP
CODE_SEG ENDS

;----------------------------------------------------------------
END START
4.12 給出等值語句如下:
ALPHA EQU 100
BETA EQU 25
GAMMA EQU 2
下列表達式的值是多少?
(1) ALPHA * 100 + BETA ;=2729H
(2) ALPHA MOD GAMMA + BETA ;=19H
(3) (ALPHA +2) * BETA – 2 ;=9F4H
(4) (BETA / 3) MOD 5 ;=3H
(5) (ALPHA +3) * (BETA MOD GAMMA) ;=67H
(6) ALPHA GE GAMMA ;=0FFFFH
(7) BETA AND 7 ;=01H
(8) GAMMA OR 3 ;=03H
答:見注釋。
4.13 對于下面的數據定義,三條MOV指令分別匯編成什么?(可用立即數方式表示)
TABLEA DW 10 DUP (?)
TABLEB DB 10 DUP (?)
TABLEC DB ‘1234’

MOV AX, LENGTH TABLEA ;匯編成MOV AX, 000AH
MOV BL, LENGTH TABLEB ;匯編成MOV BL, 000AH
MOV CL, LENGTH TABLEC ;匯編成MOV CL, 0001H
答:見注釋。
4.14 對于下面的數據定義,各條MOV指令單獨執行后,有關寄存器的內容是什么?
FLDB DB ?
TABLEA DW 20 DUP (?)
TABLEB DB ‘ABCD’

(1) MOV AX, TYPE FLDB ;(AX)=0001H
(2) MOV AX, TYPE TABLEA ;(AX)=0002H
(3) MOV CX, LENGTH TABLEA ;(CX)=0014H
(4) MOV DX, SIZE TABLEA ;(DX)=0028H
(5) MOV CX, LENGTH TABLEB ;(CX)=0001H
答:見注釋。
4.15 指出下列偽操作表達方式的錯誤,并改正之。
(1) DATA_SEG SEG ;DATA_SEG SEGMENT(偽操作
錯)
(2) SEGMENT ‘CODE’ ;SEGNAME SEGMENT ‘CODE’(缺
少段名字)
(3) MYDATA SEGMENT/DATA ;MYDATA SEGMENT

ENDS ;MYDATA ENDS(缺少段名字)
(4) MAIN_PROC PROC FAR ;刪除END MAIN_PROC也可以

END MAIN_PROC ;MAIN_PROC ENDP ;上下兩句交換位置
MAIN_PROC ENDP ; END
MAIN_PROC
答:見注釋。
4.16 按下面的要求寫出程序的框架
(1) 數據段的位置從0E000H開始,數據段中定義一個100字節的數組,其類型屬性既是字又是字節;
(2) 堆棧段從小段開始,段組名為STACK;
(3) 代碼段中指定段寄存器,指定主程序從1000H開始,給有關段寄存器賦值;
(4) 程序結束。
答:程序的框架如下:
DATA_SEG SEGMENT AT 0E000H
ARRAY_B LABEL BYTE
ARRAY_W DW 50 DUP (?)

DATA_SEG ENDS ;以上定義數據段
;----------------------------------------------------------------
STACK_SEG SEGMENT PARA STACK ‘STACK’
DW 100H DUP (?)
TOS LABEL WORD
STACK_SEG ENDS ;以上定義堆棧段
;----------------------------------------------------------------
CODE_SEG SEGMENT
MAIN PROC FAR
ASSUME CS: CODE_SEG, DS: DATA_SEG, SS: STACK_SEG
ORG 1000H
START: MOV AX, STACK_SEG
MOV SS, AX ;給SS賦值
MOV SP, OFFSET TOS ;給SP賦值
PUSH DS ;設置返回DOS
SUB AX, AX
PUSH AX
MOV AX, DATA_SEG
MOV DS, AX ;給DS賦值
┇ ;程序段部分
RET
MAIN ENDP
CODE_SEG ENDS ;以上定義代碼段
;----------------------------------------------------------------
END START
4.17 寫一個完整的程序放在代碼段C_SEG中,要求把數據段D_SEG中的AUGEND和附加段E_SEG中的ADDEND相
加,并把結果存放在D_SEG 段中的SUM中。其中AUGEND、ADDEND和SUM均為雙精度數,AUGEND賦值為
99251,ADDEND賦值為 -15962。
答:程序如下:

D_SEG SEGMENT
AUGW LABEL WORD
AUGEND DD 99251
SUM DD ?
D_SEG ENDS ;以上定義數據段
;----------------------------------------------------------------
E_SEG SEGMENT
ADDW LABEL WORD
ADDEND DD -15962
E_SEG ENDS ;以上定義附加段
;----------------------------------------------------------------
C_SEG SEGMENT
MAIN PROC FAR
ASSUME CS: C_SEG, DS: D_SEG, ES: E_SEG
START: PUSH DS ;設置返回DOS
SUB AX, AX
PUSH AX
MOV AX, D_SEG
MOV DS, AX ;給DS賦值
MOV AX, E_SEG
MOV ES, AX ;給ES賦值

MOV AX, AUGW ;以下6條指令進行加法計算
MOV BX, AUGW+2
ADD AX, ES: ADDW
ADC BX, ES: ADDW+2 ;不考慮有符號數溢出
MOV WORD PTR SUM, AX
MOV WORD PTR [SUM+2], BX
RET

MAIN ENDP
C_SEG ENDS ;以上定義代碼段
;----------------------------------------------------------------
END START
4.18 請說明表示程序結束的微操作和結束程序執行的語句之間的差別。它們在源程序中應如何表示?
答:表示程序結束的微操作是指示匯編程序MASM結束匯編的標志,在源程序中用END表示;結束程序執行的語
句是結束程序運行而返回操作系統的指令,在源程序中有多種表示方法,比如INT 20H或MOV AX, 4C00H
INT 21H以及RET等。
4.19 試說明下述指令中哪些需要加上PTR操作符:
BVAL DB 10H,20H
WVAL DW 1000H
(1) MOV AL,BVAL ;不需要
(2) MOV DL,[BX] ;不需要
(3) SUB [BX],2 ;需要,如SUB BYTE PTR [BX],2
(4) MOV CL,WVAL ;需要,如MOV CL,BYTE PTR WVAL
(5) ADD AL,BVAL+1 ;不需要
答:見注釋。

?

參考文章

http://blog.sina.com.cn/s/blog_77f58b350100q4dv.html

https://wenku.baidu.com/view/303e0e114431b90d6c85c720.html

https://shentuzhigang.blog.csdn.net/article/details/106560578

總結

以上是生活随笔為你收集整理的《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第四章——自编解析与答案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕美女 | 一区二区三区精品在线 | av资源吧首页 | 欧美一级做a爰片久久高潮 久热国产精品视频 | 波多野一区二区 | 人人草在线 | 三级网站在线播放 | 男人操女人动漫 | 狼人香蕉 | 国产 日韩 一区 | 日本亲子乱子伦xxxx50路 | 亚洲视频一区在线播放 | 伊人久久大香网 | 国产又粗又猛又爽又 | 91精品婷婷国产综合久久 | 午夜精品久久99蜜桃的功能介绍 | 国产成人无码精品久久久久 | 麻豆影片 | 午夜大片网| 国产视频福利在线观看 | 精品一区二区三区在线免费观看 | 欧美人与性动交ccoo | 污污内射久久一区二区欧美日韩 | 色老板最新地址 | av国语| jzzijzzij亚洲成熟少妇 | 97福利影院| av色成人| 国产精品久久久久三级 | 蜜桃视频一区二区三区在线观看 | 欧美韩国一区 | 啪啪网视频 | 性五月天 | 国产真实乱在线更新 | 亚洲国产精品99久久 | 亚洲一区二区国产精品 | 欧洲精品久久一区二区 | jizz日本女人 | 日本激情网 | 91n在线观看 | 久久免费电影 | 性做久久久 | 欧美中文字幕在线视频 | 日本在线黄色 | 麻豆传媒在线观看 | 97在线精品视频 | 美国一级黄色大片 | 欧美成人精品一区二区免费看片 | 草草久久久无码国产专区 | 色香蕉网站 | 国产精品主播在线 | 性猛交xxxx乱大交孕妇印度 | 五月天激情视频在线观看 | 黄色精品免费 | 亚洲一区二区三区在线免费观看 | 91视频综合网 | 外国av在线 | 免费一级做a爰片久久毛片潮 | 日韩国产精品一区二区三区 | 欧美视频一区二区三区四区在线观看 | 粉色视频网站 | 亚洲精品欧美在线 | 亚洲特级片 | 亚洲成人tv | 激情六月 | 雪白的扔子视频大全在线观看 | 欧美无吗 | 中文字幕日韩专区 | 3d动漫精品啪啪一区二区三区免费 | 国产寡妇色xxⅹ交肉视频 | 一级片免费观看 | 久久久夜色精品亚洲 | 久久国产剧情 | 国产99久一区二区三区a片 | 成年激情网 | xxx日本少妇 | 国产精品99无码一区二区视频 | 国产白丝av| 免费看污片网站 | 91免费视频网站 | 奇米第四色首页 | 国产香蕉在线视频 | 红桃视频国产 | 亚洲精品一区在线观看 | 熟妇人妻中文字幕无码老熟妇 | 少妇久久久久久久 | 欧美黄色大片在线观看 | 欧美另类xxxx| sese亚洲 | 黄色在线观看免费 | 蜜桃av影视 | av综合一区| av精选| 无码人妻丰满熟妇精品区 | 久久成人高清 | 日本少妇性高潮 | 久久夜色网 | 日本三级中文字幕在线观看 | 在线视频欧美亚洲 |