assume cs:codesg
datasg segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
datasg ends
codesg segment
begin: mov ax,datasg
mov ds,ax
mov si,0
call letterc
mov ax,4c00h
int 21h
;名称:letterc
;功能:将以0结尾的字符串中的小写字母转变成大写字母
;参数:ds:si指...


- [yigeling] 注意子程序保存寄存器现场,这样子程序就能有更好的通用性。 例如cx,如果主程序用到了cx,调用该子 04/26 18:04
- [wdm] 返回:(dx)=结果的高16位,(ax)=结果的低16位 -------- 题目要求要符合哟。 04/08 15:48
- [wdm] 博主就没有运行一下程序么?显存没定位正确,怎么显示数据啊。 es定位到什么地方了??怀疑中... 04/08 15:45
- [starrynight] mov ax,0b800h 差之毫厘,谬以千里。建议博主多思考,实验验证!!! 04/08 11:44
- [starrynight] 不对 看 divdw 最后一句指令,是否合理?!!! 04/08 11:42
- [starrynight] Divide overflow 报错!!! 程序的更新建议: assume cs 04/08 11:31
- [starrynight] Divide overflow 报错!!! 程序的更新建议: assume cs:co 04/08 11:30
- [martian] 楼主检测点的答案都没有问题。 对于栈空间定义的大小,楼主可以自己实验一下,通过你的电脑可以得出 03/29 18:59
- [mess] 马上就可以进行第四章的”第一个程序了“,博主加油啊~~~ 03/28 09:13
- [游客] 博主真省事。呵呵 这个每个人的机器上有可能不同,只要自己仔细核对就OK了。 03/27 16:25
[2008-04-26 17:31] 11章实验
阅读全文 |
评论次数(1) |
浏览次数(710) |
所属类型(汇编作业)
[2008-04-07 16:23] 实验10.1--在指定位置显示字符串
;名称:show_str
;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
;参数:(dh)=行号(取值范围0-24),(dl)=列号(取值范围0-79)
; (cl)=颜色,ds:si指向字符串的首地址
assume cs:code
data segment
db 'welcome to masm!',0
data ends
code segment
start:
mov dh,8
mov dl,3
mov cl,2
mov ax,data
...
;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
;参数:(dh)=行号(取值范围0-24),(dl)=列号(取值范围0-79)
; (cl)=颜色,ds:si指向字符串的首地址
assume cs:code
data segment
db 'welcome to masm!',0
data ends
code segment
start:
mov dh,8
mov dl,3
mov cl,2
mov ax,data
...
阅读全文 |
评论次数(2) |
浏览次数(644) |
所属类型(汇编作业)
[2008-04-07 16:23] 实验10.2-解决除法溢出
;名称:divdw
;功能:进行不会产生溢出的除法运算,被除数为dword型,除数为word型,结果为dword型
;参数:(ax)=dword型数据的低16位
; (dx)=dword型数据的高16位
; (cx)=除数
;返回:(dx)=结果的高16位,(ax)=结果的低16位
; (cx)=余数
assume cs:code,ss:stack
stack segment
dw 8 dup (0)
stack ends
code segment
start: mov ax,stack
mov ss,a...
;功能:进行不会产生溢出的除法运算,被除数为dword型,除数为word型,结果为dword型
;参数:(ax)=dword型数据的低16位
; (dx)=dword型数据的高16位
; (cx)=除数
;返回:(dx)=结果的高16位,(ax)=结果的低16位
; (cx)=余数
assume cs:code,ss:stack
stack segment
dw 8 dup (0)
stack ends
code segment
start: mov ax,stack
mov ss,a...
阅读全文 |
评论次数(2) |
浏览次数(685) |
所属类型(汇编作业)
[2008-04-07 16:07] 我做的实验10.3-数值显示
;名称:dtoc
;功能:将word型数据转变为表示十进制数的字符串,字符串以0为结尾符
;参数:(ax)=word型数据
; ds:si指向字符串的首地址
;返回:无
assume cs:code
data segment
db 10 dup (0)
data ends
code segment
start: mov ax,12666
mov bx,data
mov ds,bx
mov si,0
call dtoc
...
;功能:将word型数据转变为表示十进制数的字符串,字符串以0为结尾符
;参数:(ax)=word型数据
; ds:si指向字符串的首地址
;返回:无
assume cs:code
data segment
db 10 dup (0)
data ends
code segment
start: mov ax,12666
mov bx,data
mov ds,bx
mov si,0
call dtoc
...
阅读全文 |
评论次数(2) |
浏览次数(720) |
所属类型(汇编作业)
[2008-03-29 16:21] 检测点6.1
(1)assume cs:code
code segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start: mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: mov ax,[bx]
mov cs:[bx],ax 补空
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
en...
code segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start: mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: mov ax,[bx]
mov cs:[bx],ax 补空
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
en...
阅读全文 |
评论次数(1) |
浏览次数(615) |
所属类型(汇编作业)
[2008-03-27 15:18] 第三章实验任务
5bea
5cca
30f0
6029
00fe 2200:00fe 5cca
00fc 2200:00fc 6029
00fe as=6029
010 5cca
00fe 2200:00fe 30f0
00fc 2202:00fc 2f39...
5cca
30f0
6029
00fe 2200:00fe 5cca
00fc 2200:00fc 6029
00fe as=6029
010 5cca
00fe 2200:00fe 30f0
00fc 2202:00fc 2f39...
阅读全文 |
评论次数(1) |
浏览次数(669) |
所属类型(汇编作业)
[2008-03-27 14:46] 检测点3.2
mov ax,2000H
mov ss,ax
mov sp,0010H
解:10000H逆序拷贝到2000EH中,PUST为入栈,ss为2000H,入栈后栈顶位置为000EH,考虑到在入栈前,栈顶位置为sp-2,所以SP应为0010
mov ax,1000H
mov ss,ax
mov sp,0000H
10000H逆序拷贝到2000EH中,pop为出栈,SS为1000H,出栈后栈顶位置为0002H,考虑到在出栈后,栈顶位置为sp+2,所以SP应为0000...
mov ss,ax
mov sp,0010H
解:10000H逆序拷贝到2000EH中,PUST为入栈,ss为2000H,入栈后栈顶位置为000EH,考虑到在入栈前,栈顶位置为sp-2,所以SP应为0010
mov ax,1000H
mov ss,ax
mov sp,0000H
10000H逆序拷贝到2000EH中,pop为出栈,SS为1000H,出栈后栈顶位置为0002H,考虑到在出栈后,栈顶位置为sp+2,所以SP应为0000...
阅读全文 |
评论次数(1) |
浏览次数(590) |
所属类型(汇编作业)
[2008-03-27 13:05] 检测点3.1
(1)ax=2662
bx=e626
ax=e626
ax=2662
bx=d6e6
ax=fd48
ax=2c14
ax=0000
ax=00e6
bx=0000
bx=0026
ax=000c
(2)1. mov ax,6622H
jmp 0ff0:0100
mov ax,2000H
mov ds,ax
mov ax,[0008]
mov ax,[0002]...
bx=e626
ax=e626
ax=2662
bx=d6e6
ax=fd48
ax=2c14
ax=0000
ax=00e6
bx=0000
bx=0026
ax=000c
(2)1. mov ax,6622H
jmp 0ff0:0100
mov ax,2000H
mov ds,ax
mov ax,[0008]
mov ax,[0002]...
阅读全文 |
评论次数(1) |
浏览次数(574) |
所属类型(汇编作业)
[2008-03-26 14:18] 检测点2.3
cpu修改了4次IP
第一次在执行完 mov ax,bx后
第二次在执行完 sub ax,bx后
第三次在执行 jmp ax时
第三次在执行 jmp ax 后
最后ip=0000h
改为:
cpu修改了4次IP
第一次在执行完 mov ax,bx后
第二次在执行完 sub ax,bx后
第三次在读入 jmp ax后
第四次在执行 jmp ax 后
最后ip=0000h
解:JMP为转移指令,IP在指令读入后跟指令执行后发生2次改变,具体可看书32页...
第一次在执行完 mov ax,bx后
第二次在执行完 sub ax,bx后
第三次在执行 jmp ax时
第三次在执行 jmp ax 后
最后ip=0000h
改为:
cpu修改了4次IP
第一次在执行完 mov ax,bx后
第二次在执行完 sub ax,bx后
第三次在读入 jmp ax后
第四次在执行 jmp ax 后
最后ip=0000h
解:JMP为转移指令,IP在指令读入后跟指令执行后发生2次改变,具体可看书32页...
阅读全文 |
评论次数(3) |
浏览次数(324) |
所属类型(汇编作业)
[2008-03-25 21:57] 检测点22
<1>给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为
(0010H)到(1000FH)
解:偏移地址的变化范围是0-ffffH,所以最低地址为0010H+FFFFH=1000fH
<2>有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则,SA应满足的条件是:最小为(1001),最大为(2000)
解:数据在20000H单元,因偏移地址的变化范围是0-ffffH,最大偏移为ffffH,所以数据的最大偏移单元为20000H+ffffH=2ffffH,最小偏移单元为20000H-ffffH=10001H,当数据到最大偏移单元时,SA满足...
(0010H)到(1000FH)
解:偏移地址的变化范围是0-ffffH,所以最低地址为0010H+FFFFH=1000fH
<2>有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则,SA应满足的条件是:最小为(1001),最大为(2000)
解:数据在20000H单元,因偏移地址的变化范围是0-ffffH,最大偏移为ffffH,所以数据的最大偏移单元为20000H+ffffH=2ffffH,最小偏移单元为20000H-ffffH=10001H,当数据到最大偏移单元时,SA满足...
阅读全文 |
评论次数(2) |
浏览次数(270) |
所属类型(汇编作业)