微机原理--汇编、连接和调试

Similar documents
untitled

,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

幻灯片 1

D/A DAC ( 1us) (10~20 ) DAC0832 1

Ps22Pdf

bingdian001.com

!!""# $ %#" & $$ % $()! *% $!*% +,-. / 0 %%"#" 0 $%1 0 * $! $#)2 "



2007年普通高等学校招生全国统一考试

(2) Function 0BH: Function 0CH: (pixel, picture element) Function 0DH: Function 0FH: Function 13H:

!! "#$% & ()*+,-. &/ 00 " %0#0 % 00 " %0#0 %1% 2 %1$ 2 % )869:;.,*8656<,*= 9*>? *> A6)5, B,55, C,*D, B6 E)*)7)55) " F9D,

:,,,, ( CIP ) /,. :, ISBN CIP ( 2001) : : 127, : : : ht t p: / / www. nwpup. com : :

第5章:汇编语言程序设计

安全生产管理知识

本科生毕业设计(论文)打印格式的要求

1 2 / 3 1 A (2-1) (2-2) A4 6 A4 7 A4 8 A4 9 A ( () 4 A4, A4 7 ) 1 (2-1) (2-2) ()

4 / ( / / 5 / / ( / 6 ( / / / 3 ( 4 ( ( 2

2013年3月国家教师资格统一考试

Microsoft PowerPoint - os_4.ppt

山东2014第四季新教材《会计基础》冲刺卷第二套

※※※※※

例 009 年高考 全国卷Ⅱ 理 8 如 图 直 三 棱 柱 ABC ABC 中 AB AC D E 分 别为 AA BC 的中点 DE 平面 BCC 证明 AB AC 设二面角 A BD C 为 0o 求 BC 与平面 BCD 所 成角的大小 图 - 略 证明 以 D 为坐标原点 DA DC DD

2006年国家公务员招录考试行测真题(A)

標準 BIG 中文字型碼表 A 0 9 B C D E F 一 乙 丁 七 乃 九 了 二 人 儿 入 八 几 刀 刁 力 匕 十 卜 又 三 下 丈 上 丫 丸 凡 久 么 也 乞 于 亡 兀 刃 勺 千 叉 口 土 士 夕 大 女 子 孑 孓 寸 小 尢 尸 山 川 工 己 已 巳 巾 干 廾

Ps22Pdf

Microsoft Word htm

Visualize CMap

Microsoft Word - Z1I12A0-100.doc


山东2014第四季新教材《会计基础》冲刺卷第三套

Microsoft Word - ZLI14A0-105

数 学 高 分 的 展 望 一 管 理 类 联 考 分 析 第 一 篇 大 纲 解 析 篇 编 写 : 孙 华 明 1 综 合 能 力 考 试 时 间 :014 年 1 月 4 日 上 午 8:30~11:30 分 值 分 配 : 数 学 :75 分 逻 辑 :60 分 作 文 :65 分 ; 总

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "!!!!!!!!!!!!!!!!!!!!!!!!!!!! #! $%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "%!!!!!!!!!!!!!

Ps22Pdf

《微型计算机原理》

Ps22Pdf


1

就 构 成 了 盗 窃 罪 与 破 坏 交 通 设 施 罪 的 想 象 竞 合, 按 照 其 中 处 罚 较 重 的 犯 罪 处 罚 5. 答 案 :B 本 题 主 要 考 察 如 何 区 分 收 买 被 拐 卖 的 妇 女 儿 童 罪 与 拐 卖 妇 女 儿 童 罪 的 共 犯 问 题 ( 对 向


爱学习

考 查 知 识 点 肝 气 疏 泄 调 畅 气 机 的 作 用, 主 要 表 现 在 以 下 几 个 方 面 :(1) 促 进 血 液 与 津 液 的 运 行 输 布 ;(2) 促 进 脾 胃 的 运 化 功 能 和 胆 汁 分 泌 排 泄 ;(3) 调 畅 情 志 ;(4) 促 进 男 子 排 精


PowerPoint Presentation


2009年挑战乔戈里

微型计算机原理及应用试题 机电96

國民健康訪問調查資料管理系統

Ps22Pdf


組譯與連結(Ver6


!! "#$%&#%$ ((%)) *++*

北京金英杰医学考试中心



untitled

优合会计考点直击卷子之财经法规答案——第八套

第六組公文傳閱表


<4D F736F F D20C1E3B5E3CFC2D4D8C4A3B0E52E646F63>

2

:23:13 solo estoy( ) 老 师 SIMD 技 术 ALU 同 时 处 理 的 数 据 长 度 只 能 是 ALU 最 大 位 数 的 整 数 分 之 一 对 吗 :25:16 solo estoy( )


过 程 排 除 A 正 确 答 案 是 B 14.A 解 析 本 题 考 查 思 修 第 八 章 中 国 人 权, 新 增 考 点 其 中 直 接 考 查 宪 法 保 障 是 人 权 保 障 的 前 提 和 基 础 A 人 权 保 障 的 最 后 防 线 是 司 法 保 障,B 人 权 保 障 的

高二立體幾何

SIGNUM 3SB3

511 & & & & 3. 6 & / & / & 316< / & & 5 & & & & & *")+*, 89!, :* ( ;; 0- & & 6- & & & & < & &.1 & & & & / & &

Microsoft PowerPoint - C15_LECTURE_NOTE_06

幻灯片 1

WinXP

Microsoft PowerPoint - C15_LECTURE_NOTE_06

153


Microsoft Word htm

9202reply-s.doc

斗六高中 / 馬明宏 康熹 100 指考科目. 公民科 1

Ps22Pdf


E170C2.PDF

北京2014年会计从业资格考试《会计基础》备考机试卷一


!!#!#!#!# $% $&& ( $&)!* $&&% ) $ +,,+ ) $ -,,!# #!# $. $ $&&/ $,, %, (-- $% $&&, $) $&), $.-- $&&, $&), + $,&$

2013年二级建造师考试市政工程真题答案解析

<4D F736F F D C4EAC6D5CDA8B8DFB5C8D1A7D0A3D5D0C9FAC8ABB9FACDB3D2BBBFBCCAD4CEC4BFC6D7DBBACDCAD4BEEDBCB0B4F0B0B82DD6D8C7ECBEED2E646F63>

( CIP ) /. 2 ( ). :, 2003 ( ) ISBN R CIP ( 2003 ) ( 2 ) ( ) 850 mm 1168mm 1 /

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

CIP 1500 / ISBN X Ⅰ. Ⅱ. Ⅲ. Ⅳ. D CIP edu. cn

Application Note Format

中華民國青溪協會第四屆第三次理監事聯席會議資料

( CIP ) /,. 2 ( ) :, ( ) ISBN :. R CIP ( 2003 ) ( 2 ) ( ) 850 mm 1168mm 1 /


Microsoft PowerPoint - CH3_3.ppt [只读] [兼容模式]

Computer Architecture

99 cjt h 7. 0 (8 ) 0 () abc a b c abc0 aaa 0 a () bca abc0 aa0 a0 0 a0 abc a789 a b c (8 ) 9!

!""#!$% & # &((! $% ) &((! %" & $!""# & # &((( )# &( &((! # &(((!*+ % *

PowerPoint Presentation

說 明, 成 個 體 統 才 是! 你 痰 迷 了 心, 脂 油 蒙 了 竅, 國 孝 家 孝 兩 重 在 身, 就 把 個 人 送 來 了 這 會 子 被 人 家 告 我 們, 我 又 是 個 沒 腳 蟹, 連 官 場 中 都 知 道 我 利 害 吃 醋, 如 今 指 名 提 我, 要 休 我,

Transcription:

微机原理课程 汇编语言程序的编辑 汇编 连接和调试 西安电子科技大学 探测制导系

内容提要 编写汇编语言程序的五个重要步骤 编写源程序 汇编过程 连接过程 汇编语言编程过程 DEBUG 主要功能 DEBUG 命令 程序设计举例 结束语

编写汇编语言程序的五个重要步骤 1. 编写源程序, 如 L1.ASM 2. 汇编源程序, 得到目标代码,L1.OBJ 3. 目标代码文件的连接, 生成可执行文件 L1.EXE 4. 对 EXE 文件进行调试 5. 执行程序并输出结果

编写源程序 可利用任一种编辑器编写, 如 EDIT, CCED, NOTEPAD(WINDOWS) 注意 : 源程序名的扩展名必须是.ASM

汇编过程 利用 MASM 对源程序进行汇编, 找出语法错误 汇编后可得到 : 目标文件 (.OBJ) 列表文件 (.LST) 交叉索引文件 (.REF)

汇编常用命令格式 (1) MASM [d:][path]source; (2) MASM [d:][path]source,object,list,cref 注意 : 行末的分号表示不再提问. 各个文件名可不指定, 这时取默认文件名.

汇编命令格式举例 (1) MASM TEST; 生成 TEST.OBJ (2) MASM TEST,TEST1,TEST2,TEST3 生成 TEST1.OBJ,TEST2.LST,TEST3.CRF (3) MASM TEST,,NUL,TEST; 生成 TEST.OBJ,TEST.CRF

连接过程 利用 LINK 可将.OBJ 文件连接成可执行文件. 连接后可得到 : 可执行文件 (.EXE) 内存分配文件 (.MAP)

连接命令格式 (1) LINK TEST Run File[TEST.EXE] List File[NUL.MAP] Libraries[.LIB] (2) LINK TEST;

汇编语言编程过程 源程序 TEST.ASM MASM 汇编 目标文件 TEST.OBJ LINK 连接 可执行文件 TEST.EXE DEBUG 调试 修改

DEBUG 主要功能 (1) 显示 修改寄存器和存储单元的内容 (2) 按指定地址运行程序 (3) 设置断点, 使程序分段执行 (4) 反汇编目的代码 (5) 单步执行 (6) 直接输入汇编语言指令 (7) 读 / 写磁盘扇区 (8) 读 / 写文件

DEBUG 命令目录 1 启动 DEBUG 2 退出 DEBUG 3 显示并修改寄存器内容 4 显示并修改 PSW 寄存器内容 6 反汇编目标代码 7 设置断点并启动执行 8 单步执行 9 直接输入汇编语言指令 5 显示并修改内存单元内容

1 启动 DEBUG DEBUG [d:][path]test.exe 加载 TEST.EXE, 并进入 DEBUG 状态 DEBUG 直接进入 DEBUG 状态

2 退出 DEBUG 在 DEBUG 状态 ( - ) 下, 输入 Q

3 显示并修改寄存器内容 R 显示所有寄存器的内容 R AX AX 1010 : 821A 显示并修改 AX 寄存器内容

4 显示并修改 PSW 寄存器内容 RF OV UP DI PL ZR NA PE NC - NVPONZ 含义 1 0 溢出 (OF) OV NV 方向 (DF) DN UP 中断 (IF) EI DI 符号 (SF) NG PL 含义 1 0 零 (ZF) ZR NZ 半进位 (AF) AC NA 偶标志 (PF) PE PO 进位 (CF) CY NC

5 显示并修改内存单元内容 D SAddr:Offset 从指定地址开始显示 128 个 Bytes D SAddr:Offset1 Offset2 从地址 1 显示到地址 2 E SAddr:Offset 从地址 1 开始一个一个字节显示, 并可进行修改 E SAddr:Offset < 内容 > 直接修改从地址 1 开始的内存单元 F Saddr:Offset1 Offset2 <1Byte> 以指定的一个字节填入地址 1 到地址 2 的内存区域 F 地址 L 长度 <1Byte> 以指定的一个字节填入地址开始指定长度的内存区域

6 反汇编目标代码 U 从当前地址 (CS:IP 或上次地址 ) 开始反汇 32 个 Bytes U 地址从指定地址开始反汇编 32 个 Bytes U 地址 1 地址 2 从地址 1 反汇编到地址 2

7 设置断点并启动执行 G 从当前地址 (CS:IP) 开始执行, 直到程序结束 G 地址从当前地址 (CS:IP) 开始执行, 暂停于断点 ( 地址 ) G= 地址从指定地址开始执行, 直到程序结束 G= 地址 1, 地址 2 从地址 1 开始执行, 暂停于断点 ( 地址 2)

8 单步执行 T 从当前地址执行一条指令

9 直接输入汇编语言指令 A 从当前地址开始输入汇编语言指令 A 地址从指定地址开始输入汇编语言指令

程序设计举例 例 1: 简单例子 ( 完整结构 ) 例 2: 求字符串长度

例 1: 简单例子 ( 完整结构 ) 求一个数的绝对值 VARY=abs(VARX) 源程序文件名为 EXP1.ASM ; Obtain the absolute value of x ; Date : 1997.10.7 STACK SEGMENT STACK DW 100H DUP(?) TOP LABEL WORD STACK ENDS DATA SEGMENT VARX DB 85H VARY DB? DATA ENDS

例 1: 简单例子 ( 完整结构 ) 续 CODE SEGMENT ASSUME CS:CODE,DS:DATA ASSUME ES:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX LEA SP,TOP MOV AL,VARX AND AL,AL JNS DONE NEG AL DONE: MOV VARY,AL MOV AH,4CH ;Return to DOS MOV AL,0 INT 21H CODE ENDS END START

例 1: 汇编和连接 汇编 MASM EXP1; 得到 EXP1.OBJ 连接 LINK EXP1; 得到 EXP1.EXE 如果有语法错误, 应修改源程序 连接后得到 EXE 文件并不是说程序没错! 调试

例 1: 调试 (DEBUG) Start Here! DEBUG EXP1.EXE -U 12BC:0000 B8BB12 MOV AX,12BB 12BC:0003 8ED8 MOV DS,AX 12BC:0005 8EC0 MOV ES,AX 12BC:0007 B89B12 MOV AX,129B 12BC:000A 8ED0 MOV SS,AX 12BC:000C 8D260002 LEA SP,[0200] 12BC:0010 A00000 MOV AL,[0000] 12BC:0013 22C0 AND AL,AL 12BC:0015 7902 JNS 0019 12BC:0017 F6D8 NEG AL 12BC:0019 A20100 MOV [0001],AL 12BC:001C B44C MOV AH,4C 12BC:001E B000 MOV AL,00

断点断点单步单步 -D0 0F 128B:0000 CD 20 00 A0 00 9A F0 FE-1D F0 4F 03 F0 0B 8A 03....O.. -G10 AX=129B BX=0000 CX=0232 DX=0000 SP=0200 BP=0000 SI=0000 DI=0000 DS=12BB ES=12BB SS=129B CS=12BC IP=0010 NV UP EI PL NZ NA PO NC 12BC:0010 A00000 MOV AL,[0000] DS:0000=85 -D0 0F 12BB:0000 85 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00... -G15 AX=1285 BX=0000 CX=0232 DX=0000 SP=0200 BP=0000 SI=0000 DI=0000 DS=12BB ES=12BB SS=129B CS=12BC IP=0015 NV UP EI NG NZ NA PO NC 12BC:0015 7902 JNS 0019 -T AX=1285 BX=0000 CX=0232 DX=0000 SP=0200 BP=0000 SI=0000 DI=0000 DS=12BB ES=12BB SS=129B CS=12BC IP=0017 NV UP EI NG NZ NA PO NC 12BC:0017 F6D8 NEG AL -T AX=127B BX=0000 CX=0232 DX=0000 SP=0200 BP=0000 SI=0000 DI=0000 DS=12BB ES=12BB SS=129B CS=12BC IP=0019 NV UP EI PL NZ AC PE CY 12BC:0019 A20100 MOV [0001],AL DS:0001=00 -G Program terminated normally -Q 程序正常结束

例 2: 求字符串长度 要求滤去前置空格, 字符串以 # 结束. 例如字符串为 BUF DB ' ABC1234512 772 end#are' ;LENGTH=19=13H 结果放在 L1 DW? 编程

例 2 汇编语言程序 ; Obtain the length of a string with leading space ; Programming date : 1997.10.7 STACK SEGMENT STACK DW 100H DUP(?) TOP LABEL WORD STACK ENDS DATA SEGMENT L1 DW? BUF DB ' ABC1234512 772 end#are' ;LENGTH=19=13H DATA ENDS

续 CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX LEA SP,TOP

; Find the leading space LEA SI,BUF-1 MOV CX,0 MOV AL,' ' LP1: INC SI CMP AL,[SI] LOOPZ LP1 ; Locate the special character '#' DEC SI XOR BX,BX MOV AL,'#' LP2: INC SI INC BX CMP AL,[SI] LOOPNZ LP2 DEC BX ; Save the result (in BX) MOV L1,BX MOV AH,4CH ;Return to DOS MOV AL,0 INT 21H CODE ENDS END START 续 汇编与连接

例 2: 汇编和连接 汇编 MASM EXP2; 得到 EXP2.OBJ 连接 LINK EXP2; 得到 EXP2.EXE 如果有语法错误, 应修改源程序 连接后得到 EXE 文件并不是说程序没错! 调试

例 1: 调试 (DEBUG) Start Here! DEBUG EXP2.EXE -U 12BD:0000 B8BB12 MOV AX,12BB 12BD:0003 8ED8 MOV DS,AX 12BD:0005 8EC0 MOV ES,AX 12BD:0007 B89B12 MOV AX,129B 12BD:000A 8ED0 MOV SS,AX 12BD:000C 8D260002 LEA SP,[0200] 12BD:0010 8D360100 LEA SI,[0001] 12BD:0014 B90000 MOV CX,0000 12BD:0017 B020 MOVAL,20 12BD:0019 46 INC SI 12BD:001A 3A04 CMP AL,[SI] 12BD:001C E1FB LOOPZ 0019 12BD:001E 4E DEC SI 12BD:001F 33DB XOR BX,BX

-G10 AX=129B BX=0000 CX=0254 DX=0000 SP=0200 BP=0000 SI=0000 DI=0000 DS=12BB ES=12BB SS=129B CS=12BD IP=0010 NV UP EI PL NZ NA PO NC 12BD:0010 8D360100 LEA SI,[0001] DS:0001=2000 -D0 1F 12BB:0000 00 00 20 20 20 41 42 43-31 32 33 34 35 31 32 20.. ABC1234512 12BB:0010 20 37 37 32 20 65 6E 64-23 41 52 45 00 00 00 00 772 end#are... Step Into 第一个非空格字符位置 -G1E AX=1220 BX=0000 CX=FFFC DX=0000 SP=0200 BP=0000 SI=0005 DI=0000 DS=12BB ES=12BB SS=129B CS=12BD IP=001E NV UP EI NG NZ AC PO CY 12BD:001E 4E DEC SI L+1 # 字符位置 -G29 AX=1223 BX=0014 CX=FFE8 DX=0000 SP=0200 BP=0000 SI=0018 DI=0000 DS=12BB ES=12BB SS=129B CS=12BD IP=0029 NV UP EI PL ZR NA PE NC 12BD:0029 4B DEC BX

字符串长度 L -T AX=1223 BX=0013 CX=FFE8 DX=0000 SP=0200 BP=0000 SI=0018 DI=0000 DS=12BB ES=12BB SS=129B CS=12BD IP=002A NV UP EI PL NZ NA PO NC 12BD:002A 891E0000 MOV [0000],BX DS:0000=0000 -T AX=1223 BX=0013 CX=FFE8 DX=0000 SP=0200 BP=0000 SI=0018 DI=0000 DS=12BB ES=12BB SS=129B CS=12BD IP=002E NV UP EI PL NZ NA PO NC 12BD:002E B44C MOV AH,4C -D0 1F 12BB:0000 13 00 20 20 20 41 42 43-31 32 33 34 35 31 32 20.. ABC1234512 12BB:0010 20 37 37 32 20 65 6E 64-23 41 52 45 00 00 00 00 772 end#are... -G Program terminated normally -Q

结束语 1. 编写源程序 2. 汇编源程序 3. 连接目标程序 4. 对 EXE 文件进行调试 5. 执行程序并输出结果 别忘了 编写说明文件 See you next time