assume cs:code
stack segment
db 128 dup (0)
stack ends
code segment
set:jmp short sete
table dw sub1,sub2,sub3,sub4
sete:push bx
mov bl,ah
mov bh,0
add bx,bx
call word ptr table[bx]
pop bx
iret
sub1:push bx
push cx...
- [qiangzi] 漂亮!! 02/05 17:54
- [scuzg] 补码溢出判断是汇编语言学习的一个难点,我也曾希望从原理到方法上讲清楚这样事情: http://ww 12/31 12:01
- [release_lag] 谢谢指点,明白了 12/10 11:24
- [tinyparticle] 给段代码参考下,可以看下这个程序的逻辑: assume cs:code,ds:data,es:ta 12/08 15:11
- [游客] 9494 一窍不通的一看也就记住咯 顶个顶个 12/08 11:16
- [mywiil] 博主总结的不错啊。呵呵 12/04 09:24
- [release_lag] 谢谢提醒,我那样讲不严谨,所以,我改了一些,谢谢指正 12/03 08:52
- [游客] N小于16;N刚好被16整除;还有N不能被16整除 ========= “N小于16”也属于“N 12/01 16:00
- [release_lag] 谢谢abob ,我把笔记做了修改 11/05 09:54
- [liandakun] 二进制数1111 1111转化成十进制是2的8 次方减一,而不是2的8次方吧. 10/31 11:13
- [waiwai] 你的win32教材是罗云彬的吗? 感觉学习win32有难度,而罗云彬的教材相对王爽老师的教材也 01/27 10:10
[2010-01-26 16:35] 实验16 编写包含多个功能子程序的中断例程
阅读全文 |
评论次数(0) |
浏览次数(710) |
所属类型(汇编作业)
[2010-01-26 16:13] 对实验16知识点的深入
实验16的目的,其实是让我们了解直接定址表是怎么储存子程序入口地址的
因为table dw sub1,sub2,sub3,sub4在debug载入之后出现一段我们看不懂的代码
我们引用一个小程序
assume cs:code
code segment
start:nop
nop
mov bx,offset s2
s2:mov ax,4c00h
int 21h
code ends
end start
在debug载入
>-------------------------------------...
因为table dw sub1,sub2,sub3,sub4在debug载入之后出现一段我们看不懂的代码
我们引用一个小程序
assume cs:code
code segment
start:nop
nop
mov bx,offset s2
s2:mov ax,4c00h
int 21h
code ends
end start
在debug载入
>-------------------------------------...
阅读全文 |
评论次数(0) |
浏览次数(628) |
所属类型(默认类型)
[2010-01-21 11:35] 实验15 (可以看到实验效果的)
//程序中加入了delay,在程序没有返回到DOS之前,按A键是可以看到效果的
============================================
assume cs:code
stack segment
db 128 dup (0)
stack ends
code segment
start:mov ax,stack
mov ss,ax
mov sp,128
push cs
pop ds
mov ax,0
...
============================================
assume cs:code
stack segment
db 128 dup (0)
stack ends
code segment
start:mov ax,stack
mov ss,ax
mov sp,128
push cs
pop ds
mov ax,0
...
阅读全文 |
评论次数(1) |
浏览次数(847) |
所属类型(汇编作业)
[2010-01-15 20:26] 实验14
学习到第14这章的朋友,估计都能解决这个问题,我自己写完之后,也去论坛看到许多朋友写的程序
当然解决的办法有很多种,有用中断的,还有定义:“9,8,7,4,2,0,“/”,“/”,“:”,“:”
我的方法跟大家都不一样,不定义数据段
================================================
assume cs:code
code segment
start:mov ax,0b800h
mov es,ax
mov di,21*160+50*2
mov byte ptr es:[di+4],2fh
...
当然解决的办法有很多种,有用中断的,还有定义:“9,8,7,4,2,0,“/”,“/”,“:”,“:”
我的方法跟大家都不一样,不定义数据段
================================================
assume cs:code
code segment
start:mov ax,0b800h
mov es,ax
mov di,21*160+50*2
mov byte ptr es:[di+4],2fh
...
阅读全文 |
评论次数(0) |
浏览次数(570) |
所属类型(汇编作业)
[2010-01-13 11:56] 实验 13 编写、应用中断全程
(1)编写并安装int 7ch中断例程,功能为显示一个用0结束的字符串,中断例程安装在0:200处
---我是用10号中断例程中的2号功能和9号功能来循环输出
-------------------------------------------------
代码如下:
assume cs:code
code segment
start:mov ax,cs
mov ds,ax
mov si,offset showstr
mov ax,0
mov es,ax
mov di,200h
mov cx,...
---我是用10号中断例程中的2号功能和9号功能来循环输出
-------------------------------------------------
代码如下:
assume cs:code
code segment
start:mov ax,cs
mov ds,ax
mov si,offset showstr
mov ax,0
mov es,ax
mov di,200h
mov cx,...
阅读全文 |
评论次数(0) |
浏览次数(660) |
所属类型(汇编作业)
[2010-01-08 15:47] 实验12 编写0号中断的处理程序
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
为了验证程序的正确性,我直接在程序中加入了除法溢出
这个程序刚开始写的时候,我没有在do0中加入mov ax,4c00h,int 21H这两条指令,运行后总说CPU遇到无效指令,我还找了半天问题
------------------------------------
assume cs:code
code segment
start:mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,a...
为了验证程序的正确性,我直接在程序中加入了除法溢出
这个程序刚开始写的时候,我没有在do0中加入mov ax,4c00h,int 21H这两条指令,运行后总说CPU遇到无效指令,我还找了半天问题
------------------------------------
assume cs:code
code segment
start:mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,a...
阅读全文 |
评论次数(0) |
浏览次数(582) |
所属类型(汇编作业)
[2010-01-08 13:59] 第十二章检测题
<<<<<<<<<
>>>>>>>>>>>>>>>>>>>>>>>>>>>
下列指令能通过编译的是
1、 div [32]
2、 mov ax,ds:[bp]
3、 int 121h
4、 jmp 32
在执行int指令前各个寄存器的值如下
AX=1221 BX=0005 CX=0014 DX=0000 SP=0016 BP=0000 SI=0000 DI=0000
DS=B800 ES=13F4 SS=1404 CS=1404 IP=0012 NV UP EI PL NZ NA PO NC
则int...
>>>>>>>>>>>>>>>>>>>>>>>>>>>
下列指令能通过编译的是
1、 div [32]
2、 mov ax,ds:[bp]
3、 int 121h
4、 jmp 32
在执行int指令前各个寄存器的值如下
AX=1221 BX=0005 CX=0014 DX=0000 SP=0016 BP=0000 SI=0000 DI=0000
DS=B800 ES=13F4 SS=1404 CS=1404 IP=0012 NV UP EI PL NZ NA PO NC
则int...
阅读全文 |
评论次数(0) |
浏览次数(569) |
所属类型(默认类型)
[2010-01-06 08:43] 实验11 编写子程序
letterc:push cx
mov cx,0
s:mov cl,[si]
jcxz over
cmp cl,61h
jb next
cmp cl,7ah
ja next
sub cl,20h
mov [si],cl
next:inc si
jmp short s
over:pop cx
ret
这次的实验不难,记住大写字母的ASCII代码对照就行了
小写字母的范围是:61H~7AH
大写字母的范围是:41H~5AH ...
mov cx,0
s:mov cl,[si]
jcxz over
cmp cl,61h
jb next
cmp cl,7ah
ja next
sub cl,20h
mov [si],cl
next:inc si
jmp short s
over:pop cx
ret
这次的实验不难,记住大写字母的ASCII代码对照就行了
小写字母的范围是:61H~7AH
大写字母的范围是:41H~5AH ...
阅读全文 |
评论次数(0) |
浏览次数(612) |
所属类型(汇编作业)
[2009-12-30 16:34] OF值的判断方法
怎样判断OF的值是0还是1?
根据书本知识,如果有符号数在进行算数运算或者逻辑运算时,发生了溢出,则OF=1
反之如果有符号数在进行算数运算或者逻辑运算时,没有发生溢出,则OF=0
如何直观的来判断,是否溢出?
我们可以这样理解,如果运算得不到正确结果,则溢出,如果能得到正确结果,则没有溢出
举例:
Mov al,80h
Add al,80h
首先看结果,运行后,al=0H,如果把数据当作是有符号数时,80h是-128的补码,两个-128之和就是-256,与结果0不符,我们就说有符号数在运算时发生溢出,OF=1
再来研究下,有符号数与无符号数
同一个数据...
根据书本知识,如果有符号数在进行算数运算或者逻辑运算时,发生了溢出,则OF=1
反之如果有符号数在进行算数运算或者逻辑运算时,没有发生溢出,则OF=0
如何直观的来判断,是否溢出?
我们可以这样理解,如果运算得不到正确结果,则溢出,如果能得到正确结果,则没有溢出
举例:
Mov al,80h
Add al,80h
首先看结果,运行后,al=0H,如果把数据当作是有符号数时,80h是-128的补码,两个-128之和就是-256,与结果0不符,我们就说有符号数在运算时发生溢出,OF=1
再来研究下,有符号数与无符号数
同一个数据...
阅读全文 |
评论次数(1) |
浏览次数(1515) |
所属类型(默认类型)
[2009-12-26 15:49] 课程设计1 精简版
根据朋友在我的一篇贴子里给出的代码,得到启示,把课程设计1中的dtoc_dw和dtoc合为一个子程序
下面贴出代码
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
assume cs:codesg
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','...
下面贴出代码
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
assume cs:codesg
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','...
阅读全文 |
评论次数(0) |
浏览次数(636) |
所属类型(汇编作业)
『 查看更多文章 』